【发布时间】:2021-11-28 00:15:37
【问题描述】:
我有一个可从同一网络上的多台 Linux 机器访问的目录(准确的术语是“已安装的网络驱动器”上的目录,对吗?),其中我有一个 python 虚拟环境,由 @987654321 制作@。
我已经尝试使用这个检查一些机器上的 python 版本:
$ . venv/bin/activate
$ python --version
我会根据机器的不同返回不同的版本。有些显示3.8.5,有些显示3.8.10。我相信我已经弄清楚这是因为 venv 中的“解释器”实际上是指向 /usr/bin 中解释器的链接,这是特定于机器的:
$ ls -lah ./venv/bin/ | grep python
lrwxrwxrwx 1 echols14 cs236ta 7 Sep 29 02:08 python -> python3
lrwxrwxrwx 1 echols14 cs236ta 16 Sep 29 02:08 python3 -> /usr/bin/python3
当我查看/usr/bin 的内容时,似乎与python 相关的东西不仅仅是python3.8 的单个解释器文件:
$ ls -lah /usr/bin | grep python
-rwxr-xr-x 1 root root 2.3K Jun 20 2017 dh_python3-ply
lrwxrwxrwx 1 root root 23 Sep 28 16:10 pdb3.8 -> ../lib/python3.8/pdb.py
lrwxrwxrwx 1 root root 31 Mar 13 2020 py3versions -> ../share/python3/py3versions.py
lrwxrwxrwx 1 root root 9 Mar 13 2020 python3 -> python3.8
-rwxr-xr-x 1 root root 5.3M Sep 28 16:10 python3.8
lrwxrwxrwx 1 root root 33 Sep 28 16:10 python3.8-config -> x86_64-linux-gnu-python3.8-config
lrwxrwxrwx 1 root root 16 Mar 13 2020 python3-config -> python3.8-config
-rwxr-xr-x 1 root root 364 Dec 17 2019 python3-qr
-rwxr-xr-x 1 root root 3.2K Sep 28 16:10 x86_64-linux-gnu-python3.8-config
lrwxrwxrwx 1 root root 33 Mar 13 2020 x86_64-linux-gnu-python3-config -> x86_64-linux-gnu-python3.8-config
我希望 venv 使用 相同的 python 版本,无论它是从哪台机器上使用的。这可能吗?
我的第一个想法是从一台机器的/usr/bin 复制python3.8 文件并将其放入 venv 的 bin 中,然后调整链接以便在 venv 激活时使用它。我是否需要从 /usr/bin 复制其他与 python 相关的文件才能正常工作?这种方法安全吗,还是出于某种原因应该避免使用?
如果该方法不是一个好主意,我还有什么其他方法可以让共享 venv 始终使用相同版本的 python,而不管机器如何?
注意:我没有对所有相关机器的 root/sudo 权限,但我在其中一台机器上拥有 root/sudo 权限。
【问题讨论】:
标签: python python-3.x linux python-venv