python 安装后加载模块出错
python load module get error after install
为什么当脚本处于运行状态:
时,使用系统命令安装包后脚本找不到新模块
什么样的目录结构:
mymoduledir
|- target_module_dir
|- main.py
main.py 代码如下:
if __name__ == "__main__":
try:
import target_module
print("module already exist")
# to-do something
except ImportError:
print("has not target_module, start install")
os.system("cd target-module-dir && python setup.py install")
print("install finished")
import target_module
# to-do something
我发现:
如果 python 环境没有目标模块,我的脚本会自动安装成功,但我遇到了导入错误。日志显示:
还没有target_module,开始安装
运行 安装
.....
已完成 target_module
的处理依赖项
安装完成
回溯(最近调用最后):
文件“.\main.py”,第 237 行,在
中
进口target_module
ImportError: 没有名为 target_module_name
的模块
表示目标模块安装成功,但是我在导入的时候遇到了importerror为了证明我的结论,我打开python shell 并尝试导入目标模块,成功了。当我重新运行这个脚本时,日志显示:
模块已经存在
表示此脚本导入目标模块成功
我认为是:
脚本会在启动前检查 python 环境,如果我想在脚本 运行 状态下导入新模块,我需要让脚本知道环境已经更新。
我尝试的是:
我搜索了很多相关问题,但没有找到有效的解决方案。
For some reason, I must use python2.6 to complete my function
。我也试过像这样使用reload功能,但是不行。
我应该怎么做才能解决这个问题?
使用 pip install 会很好,我的解决方案:
import pip
if __name__ == "__main__":
try:
import target_module
print("module already exist")
# to-do something
except ImportError:
print("has not target_module, start install")
pip.main(['install', './target_module_dir/'])
print("install finished")
import target_module
# to-do something
为什么当脚本处于运行状态:
时,使用系统命令安装包后脚本找不到新模块什么样的目录结构:
mymoduledir
|- target_module_dir
|- main.py
main.py 代码如下:
if __name__ == "__main__":
try:
import target_module
print("module already exist")
# to-do something
except ImportError:
print("has not target_module, start install")
os.system("cd target-module-dir && python setup.py install")
print("install finished")
import target_module
# to-do something
我发现: 如果 python 环境没有目标模块,我的脚本会自动安装成功,但我遇到了导入错误。日志显示:
还没有target_module,开始安装
运行 安装
.....
已完成 target_module
的处理依赖项
安装完成
回溯(最近调用最后):
文件“.\main.py”,第 237 行,在
中
进口target_module
ImportError: 没有名为 target_module_name
表示目标模块安装成功,但是我在导入的时候遇到了importerror为了证明我的结论,我打开python shell 并尝试导入目标模块,成功了。当我重新运行这个脚本时,日志显示:
模块已经存在
表示此脚本导入目标模块成功
我认为是: 脚本会在启动前检查 python 环境,如果我想在脚本 运行 状态下导入新模块,我需要让脚本知道环境已经更新。
我尝试的是:
我搜索了很多相关问题,但没有找到有效的解决方案。
For some reason, I must use python2.6 to complete my function
。我也试过像这样使用reload功能,但是不行。
我应该怎么做才能解决这个问题?
使用 pip install 会很好,我的解决方案:
import pip
if __name__ == "__main__":
try:
import target_module
print("module already exist")
# to-do something
except ImportError:
print("has not target_module, start install")
pip.main(['install', './target_module_dir/'])
print("install finished")
import target_module
# to-do something