首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python脚本可以在PyCharm中运行,但不能在Git Bash中运行

Python脚本可以在PyCharm中运行,但不能在Git Bash中运行
EN

Stack Overflow用户
提问于 2017-10-11 20:17:28
回答 2查看 1.5K关注 0票数 2

假设我有一个任意大的、模块化的Python 2.7代码库:

代码语言:javascript
复制
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下的无限多个子模块中的一个子模块中

代码语言:javascript
复制
# foo.py:

from package.module2.submodule3 import foo
print foo.bar()

当从PyCharm运行脚本并使用Ctrl+F9:no problem时,会打印foo.bar()

但是,当从Git Bash终端运行该脚本时,在主目录中使用以下命令:

代码语言:javascript
复制
python path/to/project/package/module4/submodule6/subsubmobile5/foo.py

抛出以下错误:

ImportError:没有名为package.module2.submodule3的模块

我想知道我需要做些什么才能让我的脚本在Git Bash上运行,以及为什么在PyCharm和Git Bash之间存在差异。是不是跟PYTHONPATH有关

编辑

  • 许多StackOverflow答案建议使用sys.path.append() hack的一些迭代。这些建议都不适用于我的情况。
  • 我用export PYTHONPATH=absolute/path/to/project/package设置了一个.bashrc文件,其中package是我在PyCharm中的源根目录,但是仍然抛出了导入错误。相对路径也不起作用。我已经用echo $PYTHONPATH验证了路径是正确的。export PYTHONPATH=absolute/path/to/project同样也不能工作。
  • 工作目录似乎无关紧要-无论工作目录是什么,Git Bash每次都会失败,而PyCharm每次都能工作,不管工作目录是什么。

编辑2个

该问题仍未解决,但可能与PYTHONPATH在Git Bash上的设置不正确有关。当Add Content Roots to PYTHONPATH未勾选时,PyCharm会抛出与Git Bash相同的导入错误。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46688024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档