问题描述
我有一个运行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
对OS或Brew升级的升级有可能破坏了我所有的虚拟环境,我现在才注意到,但这在我看来是可疑的。我先感谢您的帮助。
ALSO:过去,删除所有环境文件/目录并重新安装虚拟环境已解决了此问题,但我宁愿不处理所有可能的问题。
看来问题出在python二进制文件的simlinks中。 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'
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)