一个工程里定义了一个自己的模块,在文件夹tools
下,用于管理项目的一些设置。
在和tools
平衡的一个目录C05
,需要引用app_config.py
,代码如下:
# 运行方法:python -m C05.5-1.py
# 否则报错:ModuleNotFoundError: No module named 'tools'
from gm.api import *
import talib
import numpy as np
from tools.app_config import Settings
set_token(Settings.GM_TOKEN)
data = history_n(symbol="SZSE.399006",frequency="1d",count=100,end_time="2017-12-31",fields="close",fill_missing="last",adjust=ADJUST_PREV,df=True)
close = np.asarray(data["close"].values)
ma3 = talib.MA(close,timeperiod = 3)
print(ma3)
见图中注释,一开始如果直接点击VS Code
右上方的运行按钮运行,它是会报错的,需要在终端运行命令:
python -m C05.5-1.py
否则,将会报如下错误:
from tools.app_config import Settings
ModuleNotFoundError: No module named ‘tools’
这样始终不是一个好办法,那么有没有更方便的?
之前我在C/C++开发中也通过修改launch.json
解决运行环境问题——VS Code C/C++项目设置launch.json中的environment参数解决支持库路径问题,对于Python
,我们也可应用修改settings.json
和launch.json
把当前工程目录放到PYTHONPATH
的方法解决找不到模块的问题,这样能使VS Code
的运行按钮能正常使用,也可以避免了设置全局变量对系统环境造成的影响。可添加如下内容:
settings.json
文件添加(修改)
{
"terminal.integrated.env.windows": {
"PYTHONPATH": "${workspaceFolder};${env:PYTHONPATH}"
}
}
该代码把项目的根文件夹添加到PYTHONPATH
变量中。
launch.json
文件添加(修改):
{
// 使用VS Code调试Python代码的配置
"version": "0.2.0",
"configurations": [
{
"name": "Python: 当前文件",
"request": "launch",
"program": "${file}", // 当前打开的文件
"env": {
"PYTHONPATH": "${workspaceFolder}" // 设置PYTHONPATH为项目目录
},
"console": "integratedTerminal"
}
]
}
注:这两个文件都放在根目录下的.vscode
文件夹中。
至此,问题解决,因引入了环境变量,运行起来不再出现找不到模块的错误了。