【问题标题】:How can a venv shared between machines use the exact same interpreter?机器之间共享的 venv 如何使用完全相同的解释器?
【发布时间】: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


    【解决方案1】:

    找到了。创建虚拟环境时,使用--copies 选项:

    --copies 尝试使用副本而不是符号链接,即使在 符号链接是平台的默认值

    documentation

    看起来像这样:

    python3 -m venv --copies venv
    

    结果如下:

    $ ls -lah venv/bin/ | grep python
    -rwxr-xr-x  1 echols14 cs236ta 5.3M Oct  7 18:26 python
    -rwxr-xr-x  1 echols14 cs236ta 5.3M Oct  7 18:26 python3
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-15
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 2018-02-05
      • 2019-01-28
      相关资源
      最近更新 更多