使用 venv 在 WSL 中安装 Python 要求时出现问题

Problem installing Python requirement in WSL with venv

我有一个来自供应商的代码存储库,我正在尝试以与他们完全相同的方式(尽可能)设置我的本地系统

我已经 运行ning Ubuntu 在 WSL 中 Windows 所以我想我也会尝试将这个系统用于这个供应商回购。在 repo 中有一个 shell 脚本,如下所示:

#!/bin/bash
cd /home/vendorname/vendor-app
. /home/vendorname/.virtualenvs/vendor-app/bin/activate
. /home/vendorname/vendor-app/vendor-environment.sh
python3 /home/vendorname/vendor-app/vendor_script.py

对于争论的情况,我们称这个文件为“runner.sh”

这里首先要注意的是,我的 Ubuntu/WSL 中没有名为 'vendorname' 的用户,正如 home 下 vendorname 文件夹的位置所暗示的那样。不确定这是否是个问题,但可能是。

其次,我设置的文件结构与 shell 脚本显示的完全相同。我已将我的代码存储库放在 /home/vendorname 下,并使用 venv 创建了一个位于 /home/vendorname/.virtualenvs/vendor-app.

下的虚拟环境

我还使用以下命令激活了我的虚拟环境:

source /home/vendorname/.virtualenvs/vendor-app/bin/activate

我的问题

当我从命令行 运行 runner.sh 文件时,出现以下错误:

Traceback (most recent call last):
  File "/home/vendorname/vendor-app/vendor_script.py", line 17, in <module>
    import requests
ModuleNotFoundError: No Module named 'requests'

这个错误似乎表明请求模块没有安装,但是每当我尝试安装它时,我都会得到“要求已经满足”的响应。

有什么想法吗?

问题出在 shell 脚本的第 3 行:

#!/bin/bash
cd /home/vendorname/vendor-app
. /home/vendorname/.virtualenvs/vendor-app/bin/activate
. /home/vendorname/vendor-app/vendor-environment.sh
python3 /home/vendorname/vendor-app/vendor_script.py

应该是这样的:

#!/bin/bash
cd /home/vendorname/vendor-app
. source /home/vendorname/.virtualenvs/vendor-app/bin/activate
. /home/vendorname/vendor-app/vendor-environment.sh
python3 /home/vendorname/vendor-app/vendor_script.py

不确定这是如何工作的,但在本地解决了我的问题