导入在控制台中工作,但不在pyCharm中

卢克·吉芬(Luc Giffon)

我有一个带有很多导入的python项目,例如:

from src.main.fr.some.module import someclass

它运行良好,但我的同事希望导入内容如下:

from fr.some.module import someclass

然后,我更改了自己喜欢PYTHONPATHactivate脚本中的virtualenv

export PYTHONPATH="/home/giffon/Documents/wopmars/src/main:/home/giffon/Documents/wopmars/src/test"

他们更换了所有的src.main.fr.some.modulefr.some.module

然后,我在控制台中尝试了我的代码,输出结果很好(请注意,我正在PYTHONPATH代码的开头打印,并且/home/giffon/Documents/wopmars/src/main看起来像预期的那样)。

(WopMars)giffon@CZC0507G5C-HP-Z400:~/Documents/wopmars/src/main/fr/tagc/wopmars/framework/parsing$ python3 Parser.py 
PRINTING THE PYTHONPATH
/home/giffon/Documents/wopmars/src/main/fr/tagc/wopmars/framework/parsing
/home/giffon/virtualenvs/WopMars/lib/python3.4/site-packages/pyparsing-2.1.4-py3.4.egg
/home/giffon/virtualenvs/WopMars/lib/python3.4/site-packages/cycler-0.10.0-py3.4.egg
/home/giffon/virtualenvs/WopMars/lib/python3.4/site-packages/pytz-2016.4-py3.4.egg
/home/giffon/virtualenvs/WopMars/lib/python3.4/site-packages/python_dateutil-2.5.3-py3.4.egg
/home/giffon/virtualenvs/WopMars/lib/python3.4/site-packages/six-1.10.0-py3.4.egg
/home/giffon/virtualenvs/WopMars/lib/python3.4/site-packages/numpy-1.11.0-py3.4-linux-x86_64.egg
/home/giffon/Documents/wopmars/src/main
/home/giffon/Documents/wopmars/src/test
/home/giffon/virtualenvs/WopMars/lib/python3.4
/home/giffon/virtualenvs/WopMars/lib/python3.4/plat-x86_64-linux-gnu
/home/giffon/virtualenvs/WopMars/lib/python3.4/lib-dynload
/usr/lib/python3.4
/usr/lib/python3.4/plat-x86_64-linux-gnu
/home/giffon/virtualenvs/WopMars/lib/python3.4/site-packages



Reading the definition file... -> done.
Checking whether the file is well formed... -> done.
Building the execution DAG... -> done.
Writing the dot file... -> done.

但是,由于我正在使用pycharm,因此我希望IDE将所做的更改考虑在内。问题来了。

我读到某处我应该通过执行以下操作来修改解释器Python路径:

文件>设置> Projet:wopmars> Projet解释器>“滚轮”>更多...>“显示所选解释器的路径(已选择WopMars解释器)”> +>“浏览到/ home / giffon / Documents / wopmars / src / main”>确定>确定>应用>确定

然后我执行与上面相同的代码:

/home/giffon/virtualenvs/WopMars/bin/python3 /home/giffon/Documents/wopmars/src/main/fr/tagc/wopmars/framework/parsing/Parser.py
PRINTING THE PYTHONPATH
/home/giffon/Documents/wopmars/src/main/fr/tagc/wopmars/framework/parsing
/home/giffon/virtualenvs/WopMars/lib/python3.4/site-packages/pyparsing-2.1.4-py3.4.egg
/home/giffon/virtualenvs/WopMars/lib/python3.4/site-packages/cycler-0.10.0-py3.4.egg
/home/giffon/virtualenvs/WopMars/lib/python3.4/site-packages/pytz-2016.4-py3.4.egg
/home/giffon/virtualenvs/WopMars/lib/python3.4/site-packages/python_dateutil-2.5.3-py3.4.egg
/home/giffon/virtualenvs/WopMars/lib/python3.4/site-packages/six-1.10.0-py3.4.egg
/home/giffon/virtualenvs/WopMars/lib/python3.4/site-packages/numpy-1.11.0-py3.4-linux-x86_64.egg
/home/giffon/Documents/wopmars/src/test
/home/giffon/Documents/wopmars/src/main
/home/giffon/virtualenvs/WopMars/lib/python3.4
/home/giffon/virtualenvs/WopMars/lib/python3.4/plat-x86_64-linux-gnu
/home/giffon/virtualenvs/WopMars/lib/python3.4/lib-dynload
/usr/lib/python3.4
/usr/lib/python3.4/plat-x86_64-linux-gnu
/home/giffon/virtualenvs/WopMars/lib/python3.4/site-packages



Traceback (most recent call last):
  File "/home/giffon/Documents/wopmars/src/main/fr/tagc/wopmars/framework/parsing/Parser.py", line 12, in <module>
    from fr.tagc.wopmars.framework.management.DAG import DAG
ImportError: No module named 'fr.tagc.wopmars.framework.management.DAG'

您可能已经注意到,/home/giffon/Documents/wopmars/src/main出现的PYTHONPATH含义是已经考虑了pycharm解释器路径的配置。因此,解释器知道在哪里可以找到模块,但是看不到fr...解决此问题的任何想法?

解决此问题可能并不有趣,但是引发错误的代码是:

print("PRINTING THE PYTHONPATH")                          
for p in sys.path:                                        
    print(p)                                              
print("\n\n")                                             


from fr.tagc.wopmars.framework.management.DAG import DAG  

注:改变PYTHONPATH.profile.bashrc给了我同样的结果

注意2:如果我不导出PYTHONPATH,则控制台会给我与pycharm相同的错误

卢克·吉芬(Luc Giffon)

感谢Zulan的评论,我解决了我的问题。

TLDR:

src/main/目录src/test/放在pycharm解释器中的一个目录PYTHONPATH


在pycharm和控制台中对Python解释器使用-v选项,我得到以下输出:

控制台输出:

# /home/giffon/Documents/wopmars/src/main/fr/__pycache__/__init__.cpython-34.pyc matches /home/giffon/Documents/wopmars/src/main/fr/__init__.py
# code object from '/home/giffon/Documents/wopmars/src/main/fr/__pycache__/__init__.cpython-34.pyc'
import 'fr' # <_frozen_importlib.SourceFileLoader object at 0x7f384ce4b160>
# /home/giffon/Documents/wopmars/src/main/fr/tagc/__pycache__/__init__.cpython-34.pyc matches /home/giffon/Documents/wopmars/src/main/fr/tagc/__init__.py
# code object from '/home/giffon/Documents/wopmars/src/main/fr/tagc/__pycache__/__init__.cpython-34.pyc'
import 'fr.tagc' # <_frozen_importlib.SourceFileLoader object at 0x7f384ce4b358>
# /home/giffon/Documents/wopmars/src/main/fr/tagc/wopmars/__pycache__/__init__.cpython-34.pyc matches /home/giffon/Documents/wopmars/src/main/fr/tagc/wopmars/__init__.py
# code object from '/home/giffon/Documents/wopmars/src/main/fr/tagc/wopmars/__pycache__/__init__.cpython-34.pyc'
import 'fr.tagc.wopmars' # <_frozen_importlib.SourceFileLoader object at 0x7f384ce4b400>
# /home/giffon/Documents/wopmars/src/main/fr/tagc/wopmars/framework/__pycache__/__init__.cpython-34.pyc matches /home/giffon/Documents/wopmars/src/main/fr/tagc/wopmars/framework/__init__.py
# code object from '/home/giffon/Documents/wopmars/src/main/fr/tagc/wopmars/framework/__pycache__/__init__.cpython-34.pyc'
import 'fr.tagc.wopmars.framework' # <_frozen_importlib.SourceFileLoader object at 0x7f384ce4b4a8>
# /home/giffon/Documents/wopmars/src/main/fr/tagc/wopmars/framework/management/__pycache__/__init__.cpython-34.pyc matches /home/giffon/Documents/wopmars/src/main/fr/tagc/wopmars/framework/management/__init__.py
# code object from '/home/giffon/Documents/wopmars/src/main/fr/tagc/wopmars/framework/management/__pycache__/__init__.cpython-34.pyc'
import 'fr.tagc.wopmars.framework.management' # <_frozen_importlib.SourceFileLoader object at 0x7f384ce4b550>

pycharm输出:

# /home/giffon/Documents/wopmars/src/test/fr/tagc/__pycache__/__init__.cpython-34.pyc matches /home/giffon/Documents/wopmars/src/test/fr/tagc/__init__.py
# code object from '/home/giffon/Documents/wopmars/src/test/fr/tagc/__pycache__/__init__.cpython-34.pyc'
import 'fr.tagc' # <_frozen_importlib.SourceFileLoader object at 0x7fb1532422e8>
# /home/giffon/Documents/wopmars/src/test/fr/tagc/wopmars/__pycache__/__init__.cpython-34.pyc matches /home/giffon/Documents/wopmars/src/test/fr/tagc/wopmars/__init__.py
# code object from '/home/giffon/Documents/wopmars/src/test/fr/tagc/wopmars/__pycache__/__init__.cpython-34.pyc'
import 'fr.tagc.wopmars' # <_frozen_importlib.SourceFileLoader object at 0x7fb153242390>
# /home/giffon/Documents/wopmars/src/test/fr/tagc/wopmars/framework/__pycache__/__init__.cpython-34.pyc matches /home/giffon/Documents/wopmars/src/test/fr/tagc/wopmars/framework/__init__.py
# code object from '/home/giffon/Documents/wopmars/src/test/fr/tagc/wopmars/framework/__pycache__/__init__.cpython-34.pyc'
import 'fr.tagc.wopmars.framework' # <_frozen_importlib.SourceFileLoader object at 0x7fb153242438>
# /home/giffon/Documents/wopmars/src/test/fr/tagc/wopmars/framework/management/__pycache__/__init__.cpython-34.pyc matches /home/giffon/Documents/wopmars/src/test/fr/tagc/wopmars/framework/management/__init__.py
# code object from '/home/giffon/Documents/wopmars/src/test/fr/tagc/wopmars/framework/management/__pycache__/__init__.cpython-34.pyc'
import 'fr.tagc.wopmars.framework.management' # <_frozen_importlib.SourceFileLoader object at 0x7fb1532424e0>
Traceback (most recent call last):
  File "/home/giffon/Documents/wopmars/src/main/fr/tagc/wopmars/framework/parsing/Parser.py", line 12, in <module>
    from fr.tagc.wopmars.framework.management.DAG import DAG
  File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
  File "<frozen importlib._bootstrap>", line 2224, in _find_and_load_unlocked
ImportError: No module named 'fr.tagc.wopmars.framework.management.DAG'

您可能已经注意到两个输出之间的细微差别:在中进行控制台解释器搜索,wopmars/src/main/在中进行pycharm解释器搜索wopmars/src/test/

实际上,如果我仔细看一下印刷品PYTHONPATH,它们是不一样的:

  • 在控制台中,/home/giffon/Documents/wopmars/src/main出现/home/giffon/Documents/wopmars/src/test在列表的前面sys.path
  • 在皮查姆(Pycharm),情况恰恰相反

然后,我把/home/giffon/Documents/wopmars/src/test /home/giffon/Documents/wopmars/src/main在pycharm它完美地工作。我认为python解释器开始在其中查找模块名称的第一部分,src/test/然后他没有找到结尾并在不查找其他路径的情况下引发错误。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

导入在控制台中工作,但不在pyCharm中

来自分类Dev

xmlhttprequests 在控制台中工作,但不在脚本中

来自分类Dev

JQuery:脚本在控制台中工作,但不在附件中工作

来自分类Dev

JQuery:脚本在控制台中工作,但不在附件中工作

来自分类Dev

jQuery在控制台中工作,但不在Rails 4 application.js文件中

来自分类Dev

聚合在控制台中工作,但不在节点上工作?

来自分类Dev

单击从控制台工作但不在代码中

来自分类Dev

actionmailer可在控制台中工作,但不能在控制器中工作

来自分类Dev

Peewee 在 python 控制台中检索数据但不在应用程序中

来自分类Dev

在控制台中打印,但不在页面上打印?

来自分类Dev

日期不在 Typescript 中工作,但在浏览器控制台中工作

来自分类Dev

SharePoint代码可在控制台中工作,但不能在Web API中工作

来自分类Dev

Python在脚本中导入文件的问题(不在控制台中)

来自分类Dev

如何在PyCharm控制台中导入自己的模块

来自分类Dev

js在控制台中工作,但不是从功能

来自分类Dev

Xpath在开发人员控制台中公开文本节点,但不在python Shell中公开

来自分类Dev

cheerio选择器(Node.js)在控制台中运行,但不在我的脚本中运行

来自分类Dev

Jquery 在控制台上工作但不在页面上

来自分类Dev

Rails多态关联在控制台中显示但不在视图中

来自分类Dev

React Native Push Notification 显示在 XCode 控制台中,但不在设备上

来自分类Dev

控制台中的角度 8 阵列更改但不在视图中

来自分类Dev

Hibernate 在控制台中工作,而不是在电源菜单中

来自分类Dev

在控制台中执行选择的 ModuleNotFoundError (PyCharm)

来自分类Dev

FireBug可以工作,但不会在控制台中产生结果

来自分类Dev

取消静音视频 JS 脚本在控制台中工作但不是页面

来自分类Dev

在控制台中工作时如何轻松重新加载/重新导入模块

来自分类Dev

即使在添加 $(document).ready(function () 后,javascript 仍可在控制台中运行但不在页面上运行

来自分类Dev

命令在控制台中起作用,而不在代码中起作用

来自分类Dev

如果语句在控制台中起作用,而不在源代码中起作用

Related 相关文章

  1. 1

    导入在控制台中工作,但不在pyCharm中

  2. 2

    xmlhttprequests 在控制台中工作,但不在脚本中

  3. 3

    JQuery:脚本在控制台中工作,但不在附件中工作

  4. 4

    JQuery:脚本在控制台中工作,但不在附件中工作

  5. 5

    jQuery在控制台中工作,但不在Rails 4 application.js文件中

  6. 6

    聚合在控制台中工作,但不在节点上工作?

  7. 7

    单击从控制台工作但不在代码中

  8. 8

    actionmailer可在控制台中工作,但不能在控制器中工作

  9. 9

    Peewee 在 python 控制台中检索数据但不在应用程序中

  10. 10

    在控制台中打印,但不在页面上打印?

  11. 11

    日期不在 Typescript 中工作,但在浏览器控制台中工作

  12. 12

    SharePoint代码可在控制台中工作,但不能在Web API中工作

  13. 13

    Python在脚本中导入文件的问题(不在控制台中)

  14. 14

    如何在PyCharm控制台中导入自己的模块

  15. 15

    js在控制台中工作,但不是从功能

  16. 16

    Xpath在开发人员控制台中公开文本节点,但不在python Shell中公开

  17. 17

    cheerio选择器(Node.js)在控制台中运行,但不在我的脚本中运行

  18. 18

    Jquery 在控制台上工作但不在页面上

  19. 19

    Rails多态关联在控制台中显示但不在视图中

  20. 20

    React Native Push Notification 显示在 XCode 控制台中,但不在设备上

  21. 21

    控制台中的角度 8 阵列更改但不在视图中

  22. 22

    Hibernate 在控制台中工作,而不是在电源菜单中

  23. 23

    在控制台中执行选择的 ModuleNotFoundError (PyCharm)

  24. 24

    FireBug可以工作,但不会在控制台中产生结果

  25. 25

    取消静音视频 JS 脚本在控制台中工作但不是页面

  26. 26

    在控制台中工作时如何轻松重新加载/重新导入模块

  27. 27

    即使在添加 $(document).ready(function () 后,javascript 仍可在控制台中运行但不在页面上运行

  28. 28

    命令在控制台中起作用,而不在代码中起作用

  29. 29

    如果语句在控制台中起作用,而不在源代码中起作用

热门标签

归档