【问题标题】:Python/PyCharm: sys.path "lib" not the same capitalization as venv's "Lib"?Python / PyCharm:sys.path“lib”与venv的“Lib”不同吗?
【发布时间】:2018-02-22 09:52:25
【问题描述】:
  1. 我克隆了一个 Python 2 项目并使用 PyCharm 创建了一个 Python 2.7.12 virtualenv。
  2. 我现在在尝试运行代码时收到“ImportError”。
  3. 调试时我注意到如果我启动 virtualenv 并运行它包含的 Python 版本,然后检查检查模块的路径,“lib”没有大写(见下面的第二个红色箭头)。李>
  4. 但是,在我的 venv 文件夹中,“Lib”大写的。

这样好吗?


下面是我得到的回溯的截图。始终找不到导入的第一个模块。如果我使用 venv 启动交互式会话,我可以导入所有模块。更奇怪的是,如果我创建一个 new 文件并尝试在其中仅导入一个文件(例如“test.py”)运行它,那么回溯会在 original 文件 (site.py)。


我将site.py 拉到一个新项目中,似乎是文件的实际名称site 导致了错误:

不起作用:

有效:

【问题讨论】:

  • 您能否向我们展示您对导入错误的追溯?我认为大写的“L”在这里不是问题,因为您可以看到您的 python/venv 发现并像正常一样使用 lib 文件夹。它可能只是 PyCharm 显示错误。
  • @Sativa 感谢您的帮助。我已经包含了回溯的图像以及有关我所看到的行为的一些其他信息。
  • 啊,python中有一个site.py。它用于将第三方包的搜索路径附加到 sys.path。也许是矛盾的
  • 是的,就是这样,感谢您的帮助!

标签: python python-2.7 pycharm


【解决方案1】:

我的问题的答案是“是的,没关系”。

ImportError 的原因是有一个名为 site 的顶级文件。正如您在 this Stack Overflow answer 中所了解的那样,拥有一个名为 site.py 的文件会混淆 Python 的包查找工具,因为有一个内置的 site 模块。

【讨论】:

    猜你喜欢
    • 2011-06-15
    • 2015-12-09
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多