脚本移动到创建 venv 后的子目录,无法找到最初安装的 pip 包
Posted
技术标签:
【中文标题】脚本移动到创建 venv 后的子目录,无法找到最初安装的 pip 包【英文标题】:script moved to subdirectory post creating a venv, unable to find pip package originally installed 【发布时间】:2020-10-05 01:47:51 【问题描述】:我创建了 myscript.py 文件,该文件被添加到与我的 main.py 文件相同的目录中。然后我创建了 venv,然后使用 pip3 安装了所有包,包括一个名为 xyz 的包。我可以看到这些软件包安装在 /usr/local/lib/python3.5/dist-packages/xyz。请注意,myscript.py 文件是指 xyz 包中的函数。
当 myscript.py 与 main.py 位于同一目录时,一切正常。然后我创建了一个名为“proto”的子目录并将 myscript.py 移动到该子目录下,并且在该子目录中创建了一个空的 init.py 文件。当我尝试执行 main.py 时,会出现以下错误。 ImportError:没有名为“xyz”的模块 是因为在venv之后创建了子目录吗? 我怎样才能解决这个问题?
这是我的新文件结构
c:\project\code
|__main__.py
|some other files
\proto
|__init__.py
|myscript.py
【问题讨论】:
您似乎在虚拟环境之外安装了 te 包。运行activate,然后pip freeze,看看是否确实安装了相关包。 为什么会有下划线 main.py ?你确定在另一个文件中没有导入 xyz 并且你在其他地方使用它? @Roy2012,是的,该软件包是在创建 venv 之前安装的。所以当我运行 pip freeze 时它没有列出,但是我现在该如何解决呢?我需要重新安装软件包还是有办法在 venv 中修复它? @user3732793 main.py 是在创建新项目实例时创建的,我懒得去更改它。 这有点奇怪。当您在全球范围内安装了该软件包时,它应该在您的 pyth 脚本运行的任何地方都可用。但是,您可以获取 venv 并再次运行 pip install xyz 【参考方案1】:在您的 env 文件夹中找到文件 pyvenv.cfg 文件。 编辑以下设置:
include-system-site-packages = true
【讨论】:
以上是关于脚本移动到创建 venv 后的子目录,无法找到最初安装的 pip 包的主要内容,如果未能解决你的问题,请参考以下文章