我试图运行一个脚本,启动,除其他外,一个python脚本。我得到一个ImportError:没有模块命名为…但是,如果我启动ipython并通过解释器以相同的方式导入相同的模块,则该模块将被接受。
发生了什么事,我该怎么解决?我试图理解python如何使用PYTHONPATH,但我完全困惑了。任何帮助都将不胜感激。
我试图运行一个脚本,启动,除其他外,一个python脚本。我得到一个ImportError:没有模块命名为…但是,如果我启动ipython并通过解释器以相同的方式导入相同的模块,则该模块将被接受。
发生了什么事,我该怎么解决?我试图理解python如何使用PYTHONPATH,但我完全困惑了。任何帮助都将不胜感激。
当前回答
这种错误很可能是由于python版本冲突造成的。例如,如果你的应用程序只在python 3上运行,而你也有python 2,那么最好指定使用哪个版本。 例如使用
python3 .....
而不是
python
其他回答
执行sys.path.append('my-path-to-module-folder')可以工作,但为了避免在每次使用模块时都在IPython中执行此操作,您可以将export PYTHONPATH="my-path-to-module-folder:$PYTHONPATH"添加到~/。bash_profile文件。
有一个类似的问题,通过调用python3而不是python来修复它,我的模块是Python3.5。
如果你从命令行运行它,有时候python解释器不知道在哪里寻找模块。
下面是我项目的目录结构:
/project/apps/..
/project/tests/..
我是按照命令运行的:
>> cd project
>> python tests/my_test.py
运行以上命令后,我得到以下错误
no module named lib
Lib在my_test.py中导入
我打印了sys。路径,并发现我正在工作的项目的路径在系统中不可用。路径列表
我在脚本my_test.py的开头添加了以下代码。
import sys
import os
module_path = os.path.abspath(os.getcwd())
if module_path not in sys.path:
sys.path.append(module_path)
我不确定这是不是解决问题的好方法,但对我来说确实有效。
这可能是由于系统上安装了不同的python版本,即python2或python3。
运行命令$ pip——version和$ pip3——version检查哪个pip来自Python 3x。例如,你应该看到如下版本信息:
pip 19.0.3 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
然后使用以下命令运行example.py脚本
$ python3 example.py
import sys
sys.path.append('/Users/{user}/Library/Python/3.7/lib/python/site-packages')
import ta