假设我有一个任意大的、模块化的Python 2.7代码库:
project
↳ docs
↳ etc
↳ package
↳ module1
↳ submodule1
↳ subsubmodule1
↳ __init__.py
↳ subsubmodule2 (... and so on)
↳ __init__.py
↳ submodule2
↳ subsubmodule1
↳ __init__.py
↳ subsubmodule2 (... and so on)
↳ __init__.py
↳ submodule3 (... and so on)
↳ __init__.py
↳ module2
↳ submodule1
↳ __init__.py
↳ submodule2 (... and so on)
↳ __init__.py
↳ __init__.py
↳ module3 (... and so on)
↳ __init__.py
↳ __init__.py
↳ test
project
是根文件夹-它是一个PyCharm项目,而不是一个模块。project\package
是项目的根Python模块。它包含许多子目录,每个子目录都是一个名为moduleN
的Python模块。project\package\moduleN
模块都包含许多子目录,每个子目录都是一个名为submoduleN
的Python模块...以此类推。假设我想要运行一个名为foo.py
的特定Python脚本,它位于package
下的无限多个子模块中的一个子模块中
# foo.py:
from package.module2.submodule3 import foo
print foo.bar()
当从PyCharm运行脚本并使用Ctrl+F9
:no problem时,会打印foo.bar()
。
但是,当从Git Bash终端运行该脚本时,在主目录中使用以下命令:
python path/to/project/package/module4/submodule6/subsubmobile5/foo.py
抛出以下错误:
ImportError:没有名为package.module2.submodule3的模块
我想知道我需要做些什么才能让我的脚本在Git Bash上运行,以及为什么在PyCharm和Git Bash之间存在差异。是不是跟PYTHONPATH
有关
编辑:
sys.path.append()
hack的一些迭代。这些建议都不适用于我的情况。export PYTHONPATH=absolute/path/to/project/package
设置了一个.bashrc
文件,其中package
是我在PyCharm中的源根目录,但是仍然抛出了导入错误。相对路径也不起作用。我已经用echo $PYTHONPATH
验证了路径是正确的。export PYTHONPATH=absolute/path/to/project
同样也不能工作。编辑2个
该问题仍未解决,但可能与PYTHONPATH
在Git Bash上的设置不正确有关。当Add Content Roots to PYTHONPATH
未勾选时,PyCharm会抛出与Git Bash相同的导入错误。
https://stackoverflow.com/questions/46688024
复制相似问题