为什么 AWS 的 Python 圣杯不尊重我的 virtualenv?

mma*_*nry 5 python amazon-web-services chalice

我正在尝试按照教程部署一个 chalice 应用程序。我在 python3.6 中使用 virtualenv。我的应用程序依赖于 requirements.txt 中的 github 存储库,而该存储库的 requirements.txt 依赖于多个库。

我可以很好地运行应用程序,python -i app.py并且可以在 REPL 中正确执行我的端点。

但是,当我运行时,chalice deploy我收到一个错误,抱怨我需要的 github 存储库所需的模块。

File "/usr/local/lib/python2.7/dist-packages/chalice/deploy/packager.py", line 715, in download_all_dependencies
raise NoSuchPackageError(str(package_name))
NoSuchPackageError: Could not satisfy the requirement: PyQt5>=5.8.1
Run Code Online (Sandbox Code Playgroud)

但是请注意,使用的这个 chalice 库是 2.7。我在一个设置为 python3.6 的 virtualenv 中。

我意识到我之前在全局安装了 chalice,这可能是一个错误。所以我 pip 全局卸载了 chalice,但它仍然安装在我的 virtualenv 中。

现在重新运行圣杯,我得到

$ chalice --version
bash: /usr/local/bin/chalice: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我尝试将 chalice 的安装重新运行到本地 virtualenv,但它没有改变任何东西。

我在这里做错了什么?

alb*_*ert 1

这可能有多种原因。

我假设你的 virtualenv 被称为 venv,如果没有相应地改变它。

您还没有激活您的 virtualenv。

使固定:

source venv/bin/activate 
Run Code Online (Sandbox Code Playgroud)

您激活了 virtualenv,但路径不匹配。

使固定:

echo $PATH
/Users/[yourpath]/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/bin
Run Code Online (Sandbox Code Playgroud)

如果/Users/[yourpath]/venv/bin不正确,请检查:

grep "VIRTUAL_ENV=" venv/bin/activate
VIRTUAL_ENV="/Users/[yourpath]/venv"
Run Code Online (Sandbox Code Playgroud)

然后进行相应更新venv/bin/activate

注意:virtualenv 文件夹不应添加到您的存储库中。这可能是您问题的根源。

如果您想确保每个人都有匹配的依赖项,请运行:

python -m pip freeze > requirements.txt
Run Code Online (Sandbox Code Playgroud)