- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一台运行 Catalina 10.15.6 的 macbook pro。
我对 python venv
有一个一致的问题环境失败。
当我开始一个 python 项目时,我在项目目录中运行它:
python3 -m venv .
这创建了环境。我用 . bin/activate
激活环境正在运行 which python3
给我这样的东西:
/Users/qotsa42/Projects/web/project_name/bin/python3
换句话说,它使用虚拟环境中的 python 二进制文件。一切都很好。
我的计算机上有几十个项目正是以这种方式创建的。有时,由于没有明显的原因且没有明显的模式,激活脚本不再加载 python 二进制文件。
例如,我刚刚尝试为一个我几个月没有接触过的项目激活一个环境。 which pip3
给我这个:
/Users/qotsa42/Projects/web/project_name/bin/pip3
但是which python3
给我这个:
/usr/local/bin/python3
我这辈子都弄不清楚是什么阻止了虚拟环境加载正确的 python 二进制文件。
在这个特定的项目中,我制作了我的 main.py
文件可执行文件并在顶部放置一个 bash shebang 指向虚拟环境的二进制文件。当我运行脚本时,它给了我这个:
/Users/qotsa42/Projects/web/project_name/bin/python3: bad interpreter: No such file or directory
突然进入 bin
故障环境的目录和做ls -la
给我这个:
total 64
drwxr-xr-x 13 qotsa42 DOMAIN\Domain Users 416B Jul 23 13:54 ./
drwxr-xr-x 15 qotsa42 DOMAIN\Domain Users 480B Sep 16 12:41 ../
-rw-r--r-- 1 qotsa42 DOMAIN\Domain Users 2.2K Jul 23 13:54 activate
-rw-r--r-- 1 qotsa42 DOMAIN\Domain Users 1.3K Jul 23 13:54 activate.csh
-rw-r--r-- 1 qotsa42 DOMAIN\Domain Users 2.4K Jul 23 13:54 activate.fish
-rwxr-xr-x 1 qotsa42 DOMAIN\Domain Users 269B Jul 23 13:54 easy_install*
-rwxr-xr-x 1 qotsa42 DOMAIN\Domain Users 269B Jul 23 13:54 easy_install-3.7*
-rwxr-xr-x 1 qotsa42 DOMAIN\Domain Users 260B Jul 23 13:54 pip*
-rwxr-xr-x 1 qotsa42 DOMAIN\Domain Users 260B Jul 23 13:54 pip3*
-rwxr-xr-x 1 qotsa42 DOMAIN\Domain Users 260B Jul 23 13:54 pip3.7*
lrwxr-xr-x 1 qotsa42 DOMAIN\Domain Users 9B Jul 23 13:54 python@ -> python3.7
lrwxr-xr-x 1 qotsa42 DOMAIN\Domain Users 9B Jul 23 13:54 python3@ -> python3.7
lrwxr-xr-x 1 qotsa42 DOMAIN\Domain Users 35B Jul 23 13:54 python3.7@ -> /usr/local/opt/python/bin/python3.7
现在还是一样的ls -la
在虚拟环境仍然运行的项目上执行命令:
total 136
drwxr-xr-x 19 qotsa42 DOMAIN\Domain Users 608B Sep 14 14:53 ./
drwxr-xr-x 13 qotsa42 DOMAIN\Domain Users 416B Sep 14 15:15 ../
-rw-r--r-- 1 qotsa42 DOMAIN\Domain Users 8.6K Aug 31 12:00 Activate.ps1
-rw-r--r-- 1 qotsa42 DOMAIN\Domain Users 2.2K Aug 31 12:00 activate
-rw-r--r-- 1 qotsa42 DOMAIN\Domain Users 1.3K Aug 31 12:00 activate.csh
-rw-r--r-- 1 qotsa42 DOMAIN\Domain Users 2.4K Aug 31 12:00 activate.fish
-rwxr-xr-x 1 qotsa42 DOMAIN\Domain Users 260B Sep 14 14:53 black*
-rwxr-xr-x 1 qotsa42 DOMAIN\Domain Users 255B Sep 14 14:53 black-primer*
-rwxr-xr-x 1 qotsa42 DOMAIN\Domain Users 261B Sep 14 14:53 blackd*
-rwxr-xr-x 1 qotsa42 DOMAIN\Domain Users 270B Aug 31 12:00 easy_install*
-rwxr-xr-x 1 qotsa42 DOMAIN\Domain Users 270B Aug 31 12:00 easy_install-3.8*
-rwxr-xr-x 1 qotsa42 DOMAIN\Domain Users 256B Aug 31 12:01 f2py*
-rwxr-xr-x 1 qotsa42 DOMAIN\Domain Users 256B Aug 31 12:01 f2py3*
-rwxr-xr-x 1 qotsa42 DOMAIN\Domain Users 256B Aug 31 12:01 f2py3.8*
-rwxr-xr-x 1 qotsa42 DOMAIN\Domain Users 261B Aug 31 12:01 pip*
-rwxr-xr-x 1 qotsa42 DOMAIN\Domain Users 261B Aug 31 12:01 pip3*
-rwxr-xr-x 1 qotsa42 DOMAIN\Domain Users 261B Aug 31 12:01 pip3.8*
lrwxr-xr-x 1 qotsa42 DOMAIN\Domain Users 7B Aug 31 12:00 python@ -> python3
lrwxr-xr-x 1 qotsa42 DOMAIN\Domain Users 22B Aug 31 12:00 python3@ -> /usr/local/bin/python3
有可能是操作系统升级或 Brew 升级破坏了我所有的虚拟环境,我现在才注意到,但这对我来说似乎很可疑。感谢您提前提供的帮助。
此外:删除所有环境文件/目录并重新安装虚拟环境已在过去解决了这个问题,但如果可能的话,我宁愿不处理所有这些问题。
看来问题出在 python 二进制文件的模拟链接中。没有 python3.7
/usr/local/opt/python/bin
中的二进制文件目录,但有一个 python3.8
一个。
正在运行 /usr/local/opt/python/bin/python3.8 ./main.py
有效,但它不加载我通过 pip3
安装的模块-- 即我得到 ModuleNotFoundError: No module named 'pyodbc'
正在运行 python3 -m venv --upgrade .
输出:
Error: [Errno 2] No such file or directory: '/Users/qotsa42/Projects/web/import_csv/bin/python3'
最佳答案
您的激活脚本是什么样的?它的主要目的是在 PATH 的开头插入 Python。
这是我的:
VIRTUAL_ENV="/Users/myuser/kds2/py2/venv38"
export VIRTUAL_ENV
_OLD_VIRTUAL_PATH="$PATH"
PATH="$VIRTUAL_ENV/bin:$PATH"
在运行 activate
之前,我在我的 PATH 中有这个(我使用一个实用程序逐行拆分它):
0 /Users/myuser/.cargo/bin
1 /Users/myuser/.nvm/versions/node/v10.15.0/bin
2 /opt/local/bin
激活后
0 /Users/myuser/kds2/py2/venv38/bin
1 /Users/myuser/.cargo/bin
2 /Users/myuser/.nvm/versions/node/v10.15.0/bin
所以,基本上,它所做的一切都是在 PATH 前加上 $VIRTUAL_ENV/bin
我建议您看一下激活并尝试查看它的作用。 $VIRTUAL_ENV 有什么问题吗?它确实硬编码到激活位置。
printf "\n$VIRTUALENV:$VIRTUALENV:\n"
可能会让您了解发生了什么。
VIRTUALENV=$(fnp $BASH_SOURCE/../..)
就可以做到这一点,
现在,接下来是您的实际目录是什么样的:
如果我 cd
在那个 venv 的正上方,我有这个树结构:
tree -d -L 2 venv
venv
├── bin
│ └── __pycache__
├── cx_Oracle-doc
├── include
├── lib
│ └── python3.6
├── man
│ └── man1
└── share
├── doc
├── jupyter
└── man
现在,您的可能有所不同。 3.6 可能是我剩下的。但是有一个目录结构,里面装满了文件。
让我们 cd
到 bin,即我在 activate-ion 之后的第一个 PATH 条目
和ls -l python
(venv38) myuser@bin$ ls -l python
lrwxr-xr-x 1 myuser staff 9 May 29 13:15 python -> python3.8
这只是为了使其版本中立。
让我们ls -l python3.8
lrwxr-xr-x 1 myuser staff 73 May 29 13:15 python3.8 -> /opt/local/Library/Frameworks/Python.framework/Versions/3.8/bin/python3.8
这是 macports 放置 Python 的地方。如果您使用的是 brew,它应该位于 /usr/local/
之类的地方(我认为)。
是的,我可以启动它:
(venv38) myuser@bin$ python3.8
Python 3.8.1 (default, Jan 5 2020, 21:32:35)
[Clang 10.0.1 (clang-1001.0.46.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
现在,其中任何一个都可能失败,但需要通过步骤来验证发生了什么:
然后您可以推断问题的原因。
而且,如果你想知道的是 3.7 还是 3.8 项目,也许你可以通过 rm python
然后 ln -s/usr/local/opt/python/bin/来修复python3.8 python
.
但在此之前,请看一下 python 的时间戳,大概指向 3.7。符号链接(symbolic link)带有创建链接的时间。这会敲响警钟吗?那个时候你安装了什么东西吗?也许与 pip 有关?
现在,我已经让 Python 3.6/3.7/3.8 共存,几乎没有问题。但是,如果可以的话,也许可以考虑在 1 个版本上进行标准化,除非你让你的 venv 稳定下来?
关于Python venv 项目随机停止能够找到 python3 二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63926784/
我对使用 venv 还很陌生。对于许多不同的软件包,有没有办法告诉每个 venv 使用了多少?当我删除 venv 时,我是否也删除了为其中的所有内容分配的内存空间? 最佳答案 When I delet
我是 python venv 的新手,很抱歉可能会提出愚蠢的问题。 我正在开发一个小型图书馆。我已经创建了开发虚拟环境,其中包含库使用所需的所有包,并将所有版本的需求卡住到 requirements.
我想创建一个具有 python3.8 作为 python3 的 venv 在 Ubuntu 18.04 上 我做了: > sudo apt install python3.8 python3.8-ve
全部 我对运行 shell 脚本的格式有疑问我遇到这个问题是我设置了一个虚拟环境 但是当我输入 . venv/bin/activate 代码没有问题,运行成功。但是我知道另一种运行方式是使用 ./v
尽管已正确安装所需的开发库和 venv 库,但我还是收到了这些连续错误。 这是终端中的连续输出。 ~/Desktop/virtualenvs$ python3.8 -m venv newpy38 Th
这个问题在这里已经有了答案: Why 'python3 -m venv myenv' installs older version of pip into myenv than any version
假设我创建了一个名为 venv (virtualenv venv) 的虚拟环境 从阅读教程中,我了解到有两种激活虚拟环境的方法: 。 venv/bin/激活 source venv/bin/activ
此问题已解决,已向 Python.org 报告错误。见我的self-answer below解决方法,直到它在 Python 的 future 版本中得到修复 我的一台电脑被这个 bug 咬住了,它不
选择venv python作为解释器后,当VScode左下方显示venv python时:- 我是否仍应在 VScode 终端中激活 venv 以进行 PIP 安装? 或者,由于 venv pytho
我的 Ubuntu 已经安装了几个 Python: /usr/bin/python2.7: Python 2.7.5 /usr/local/bin/python3.6: Python 3.6.10 /
我想使用 Enthought 的 Canopy 发行版创建一个虚拟环境,但没有站点包。 以下:https://support.enthought.com/entries/21802240-Use-ve
(在用重复的问题投票标记我之前,请注意,我在这个问题上找到的所有内容都与 virtualenv 有关,而不是 venv) 系统: Ubuntu 服务器 16.04 已安装 Python 3.6,原生
我在 ubuntu 14.04 桌面上使用 emacs 24.5,并使用 pyvenv 包来管理我的虚拟环境。 我有两个不同的Python虚拟环境,一个使用Python 2,另一个使用Python 3
我想创建一个 venv 环境(不是 virtualenv )使用以下命令: sudo apt-get install python3.8-venv python3.8 -m venv venv_nam
我正在尝试使用以下方法在 Windows 中创建一个虚拟环境: python3 -m venv 运行上述命令后,在cmd中查看当前目录的内容时,没有看到venv目录出现。该命令不会引发任何错误。 这
我正在使用 .venv 创建一个用于项目的虚拟环境。在这个项目中,我需要访问 OpenAI GPT3 环境。为此,我有一个 API key ,但我想将其存储为环境变量。因为我使用windows和VS-
我正在尝试使用多阶段创建Python webapp docker镜像,以缩小镜像大小...现在大约300mb ...它也在使用虚拟环境。 docker镜像会构建并正常运行,直到我需要添加多阶段为止,以
正在学习Python和Django,想从PyCharm社区版2019.3激活虚拟环境 我可以看到在我的文件夹下创建的 venv 但是当我尝试使用命令激活它时 source venv/bin/activ
我正在使用 .venv 创建一个用于项目的虚拟环境。在这个项目中,我需要访问 OpenAI GPT3 环境。为此,我有一个 API key ,但我想将其存储为环境变量。因为我使用windows和VS-
正在学习Python和Django,想从PyCharm社区版2019.3激活虚拟环境 我可以看到在我的文件夹下创建的 venv 但是当我尝试使用命令激活它时 source venv/bin/activ
我是一名优秀的程序员,十分优秀!