脚本移动到创建 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 文件,该文件被添加到与我的 ma​​in.py 文件相同的目录中。然后我创建了 venv,然后使用 pip3 安装了所有包,包括一个名为 xyz 的包。我可以看到这些软件包安装在 /usr/local/lib/python3.5/dist-packages/xyz。请注意,myscript.py 文件是指 xyz 包中的函数。

当 myscript.py 与 ma​​in.py 位于同一目录时,一切正常。然后我创建了一个名为“proto”的子目录并将 myscript.py 移动到该子目录下,并且在该子目录中创建了一个空的 init.py 文件。当我尝试执行 ma​​in.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 包的主要内容,如果未能解决你的问题,请参考以下文章

无法从 cron 作业中找到 dotenv 环境变量

cython 嵌入后的 ImportError

Python3,用venv创建虚拟环境

bash 无法从文本文件中找到目录 [重复]

PyCharm无法通过选项“在路径中查找”(⌘⇧F)在venv中找到数据[重复]

supervisor支持python虚拟环境venv