Virtualenv 找不到导入的模块

2 投票
1 回答
2708 浏览
提问于 2025-04-18 12:56

我有一个项目,是用虚拟环境(virtualenv)打包的。它顺利安装了setuptools和pip,并设置了所有需要的文件夹。接着我运行了source bin/activate,并安装了我项目所需的库:xmlutils和configparser。

我把项目文件夹压缩成了一个zip文件,然后尝试在另一台电脑上使用它。我可以毫无问题地运行source bin/activate。但是,当我运行我的脚本时,系统找不到xmlutils这个模块。我查看了项目中的“libs/site-packages”文件夹,发现这个模块确实在那里。

这是不是因为我需要在另一台电脑上安装虚拟环境呢?

这是我设置虚拟环境后的项目结构:

项目: bin include lib lib64 projectScript.py projectScript2.py

1 个回答

4

在创建一个虚拟环境(virtualenv)时,它是绑定在一个特定的路径上的,这意味着你不能重命名它或者移动它。如果你想要创建一个可以移动的虚拟环境,可以使用文档中提到的 --relocatable 选项,具体可以查看这里

要让虚拟环境可以移动,你需要使用的命令是:

virtualenv --relocatable ENV

注意两点:

  1. 这个功能还在实验阶段,不保证一定能用。
  2. 如果你在虚拟环境中添加了新的包,必须再次运行上面的命令。

另外(正如我在评论中提到的),你可以使用 pip freeze > requirements.txt 来保存一个文本文件,这个文件里包含了你虚拟环境中所有包的需求。然后你可以在新的虚拟环境中使用命令 pip install -r requirements.txt 来安装这些包。

撰写回答