无法在远程计算机中正确激活 Python

Cannot activate correct Python in remote computer

我已将虚拟环境移动到远程计算机上。我正在尝试激活 python 3.8,但运气不佳。

我使用的虚拟环境是使用 venv 创建的。但是我在 Mac 上创建了它,然后将其移动到目标 Linux 计算机上。下面演示Linux电脑有python3.8

kylefoley@kfoley76:~/byu_corpus_small/venv_byu/bin$ ls
activate       activate_this.py  pip     pip3.8     python3
activate.csh   easy_install      pip2    python     python-config
activate.fish  easy_install-2.7  pip2.7  python2    wheel
Activate.ps1   easy_install-3.8  pip3    python2.7

我使用以下命令激活了虚拟环境:

kylefoley@kfoley76:~/byu_corpus_small$ source venv_byu/bin/activate

但是下面的命令显示python2.7被激活

(venv_byu) kylefoley@kfoley76:~/byu_corpus_small/code$ python --version
Python 2.7.13

此外,当我 运行 我的一个程序时,我得到了一个只有 python 2.7 会抛出的语法错误:

(venv_byu) kylefoley@kfoley76:~/byu_corpus_small/code$ python3 fix_mistakes.py
  File "fix_mistakes.py", line 113
    p = print
    p (f"{round(c - b,0)} seconds")
SyntaxError: invalid syntax

即使我 运行 命令 python3,它也会激活 python 3.5,如下所示:

(venv_byu) kylefoley@kfoley76:~/byu_corpus_small/code$ python3
Python 3.5.3 (default, Sep 27 2018, 17:25:39) 

我什至认为计算机甚至没有使用我的工作环境,而是默认的 python 解释器,原因如下:

(venv_byu) kylefoley@kfoley76:~/byu_corpus_small/code$ which python
/usr/bin/python

我认为解释器会在我的虚拟环境中:

/venv_byu/bin/python3
#####更新

我能够在 linux 上安装 venv,但我仍在激活 python 3.5.3

kylefoley@kfoley76:~/byu_corpus_small$ source venv_byu/bin/activate
(venv_byu) kylefoley@kfoley76:~/byu_corpus_small$ which python
/home/kylefoley/byu_corpus_small/venv_byu/bin/python
(venv_byu) kylefoley@kfoley76:~/byu_corpus_small$ python --version
Python 3.5.3

貌似我下载的环境没有3.8

(venv_byu) kylefoley@kfoley76:~/byu_corpus_small/venv_byu/bin$ ls
activate      activate.fish  easy_install-3.5  pip3    python
activate.csh  easy_install   pip               pip3.5  python3

现在,我只需要弄清楚如何获得 3.8

虚拟环境不可移植。您应该在目标计算机上创建一个新的虚拟环境,并用您需要的包填充它。在本地计算机上用 pip freeze 列出它们或在 requirements.txt 中手动枚举它们是两种常见的方法。

Python附带的标准虚拟环境实际上硬编码了虚拟环境的路径,所以你甚至不能在本地重命名目录,更不用说将它复制到不同的目录结构上了计算机。

出于各种原因,activate 命令需要 运行 和 source,但这也意味着它对故障的抵抗力不是很强。例如,它可以抛出错误或静默失败,但仍会更新您的提示,使其看起来好像虚拟环境已成功激活。

要在 Python 3.8 安装为 /usr/local/bin/python3.8 的计算机上创建新的虚拟环境,您可以 运行

/usr/local/bin/python3.8 -m venv venv_byu

然后您需要 activate 这个环境,并且 pip install 或者用您需要的库填充它。

pip freeze 将列出所有已安装软件包的确切版本,因此更精确地获取所有内容的完全相同版本。如果您在 requirements.txt 中手动列出包,则 没有 指定任何内容的精确版本,并且您可以省略作为包的依赖项引入的包你其实特别依赖。