我的目录如下:
- project
- python
- src
- ml
- __init__.py
- classifier_dnn.py
- util.py
- vectorizer
- fv_davison.py
- __init__.py
我正在项目文件夹路径中运行classifier_dnn.py:
~project&PYTHONPATH=/home/project/
~project$python3 /home/project/python/src/ml/classifier_dnn.py /home/project/data/labeled_data_all.csv /home/project/output
但是当classifier_dn导入ml.util时会生成错误:
Traceback (most recent call last):
File "/home/project/chase/python/src/ml/classifier_dnn.py", line 5, in
from ml import util
ImportError: No module named 'ml'
我也尝试设置PYTHONPATH = / home / project / python或PYTHONPATH = / home / project / src,但是发生相同的错误.
当我在PyCharm中对此进行测试时,如果将python / src设置为源根目录,则不管工作目录是什么,它都可以工作.但是当我从命令行运行它时,我不知道如何正确设置它.
任何帮助请
谢谢
解决方法:
我对此有a writeup,但是我将内联复制相关文本.
您有两个问题:
>您需要导出PYTHONPATH(导出PYTHONPATH = / full / path / to / src)
>您应该使用python -m module.path而不是python path / to / file.py来运行
核心问题是python path / to / file.py将path / to放在PYTHONPATH(sys.path)的开头
这将导致导入从(根据您的情况)src / ml开始,而不是预期的src.
通过使用-m,可以避免使用此路径,它将src正确地保留为sys.path的开头.
When I test this in PyCharm, it works if set python/src to become source root, regardless what working directory is. But I cannot figure out how to set this properly when I run this from command line.
您可以通过进入src目录来执行此操作
标签:python