我在 Linux Mint 20.3 下使用 PyCharm 2022.3.2(社区版)。我创建了一个新项目并选择“使用 Virtualenv 的新环境”作为选项。 PyCharm 显示“Python 3.10”作为该项目的解释器:
在这个项目中运行我的代码,包括将新包安装到 venv 中,一切都正常。 PyCharm 中的交互式 Python 控制台还确认 Python 3.10 与 venv 中的可执行文件一起使用:
但是,现在我想从常规终端执行我的代码(没有 PyCharm)。所以我cd
进入我的项目目录并调用以下命令:
$ source venv/bin/activate
(venv) $ which python
python not found
它没有找到 python 可执行文件!中的 3 个符号链接venv/bin
均无效(在我的终端窗口中为红色):
(venv) $ ls -lah venv/bin/pyt*
lrwxrwxrwx 1 (redacted) (redacted) 19 Mar 15 09:56 venv/bin/python -> /usr/bin/python3.10
lrwxrwxrwx 1 (redacted) (redacted) 6 Mar 15 09:56 venv/bin/python3 -> python
lrwxrwxrwx 1 (redacted) (redacted) 6 Mar 15 09:56 venv/bin/python3.10 -> python
/usr/bin/python3.10
我的系统上没有安装:
$ ls -lah /usr/bin/pyt*
lrwxrwxrwx 1 root root 9 Aug 8 2020 /usr/bin/python2 -> python2.7
-rwxr-xr-x 1 root root 3,5M Jul 1 2022 /usr/bin/python2.7
lrwxrwxrwx 1 root root 9 Aug 8 2020 /usr/bin/python3 -> python3.8
-rwxr-xr-x 1 root root 5,3M Nov 14 13:59 /usr/bin/python3.8
lrwxrwxrwx 1 root root 33 Nov 14 13:59 /usr/bin/python3.8-config -> x86_64-linux-gnu-python3.8-config
lrwxrwxrwx 1 root root 16 Mar 13 2020 /usr/bin/python3-config -> python3.8-config
那么 PyCharm 使用的 Python 3.10 可执行文件位于哪里?我如何在 PyCharm 之外使用 venv?
答案1
我终于明白是怎么回事了。我通过 Linux Mint 软件管理器安装了 PyCharm,它将其安装为弗莱帕克包裹。显然,这个包在沙箱中使用了自己的Python 3.10:
沙箱
使用 Flatpak,每个应用程序都在一个隔离的环境(称为“沙盒”)中构建和运行。每个沙箱都包含一个应用程序及其运行时。
当进入这个沙箱时,会找到正确的Python可执行文件,可以正确输入venv并可以启动应用程序:
$ flatpak run --branch=stable --arch=x86_64 --command=bash com.jetbrains.PyCharm-Community
$ ls -lah /usr/bin/pyt*
lrwxrwxrwx 1 nfsnobody nfsnobody 7 Feb 27 11:05 /usr/bin/python -> python3
lrwxrwxrwx 1 nfsnobody nfsnobody 10 Feb 27 11:05 /usr/bin/python3 -> python3.10
-rwxr-xr-x 2 nfsnobody nfsnobody 16K Feb 27 11:04 /usr/bin/python3.10
-rwxr-xr-x 2 nfsnobody nfsnobody 3,3K Feb 27 11:04 /usr/bin/python3.10-config
lrwxrwxrwx 1 nfsnobody nfsnobody 17 Feb 27 11:05 /usr/bin/python3-config -> python3.10-config
$ cd <project_directory>
$ source venv/bin/activate
(venv) $ which python
<project_directory>/venv/bin/python