创建一个在没有安装 python 的系统上工作的 python venv

问题描述 投票:0回答:2

如何以可用于调用 python 脚本但不需要系统范围的 python 的方式设置虚拟环境。

我的目标是拥有一个包含 python 脚本的文件夹,在该文件夹中包含 python 本身以及该 python 脚本所需的所有库。

我试过使用 pycharm 来管理我的 venv,但是 venv py charm 创建需要一个系统范围的 python 才能让 venv python 工作。 (我很确定这是因为 pyvenv.cfg 文件需要引用系统范围的 python)。


归根结底,我不在乎我是用 pycharm 还是其他工具创建 venv,我只希望它能正常工作。有什么建议么?



我不想要的是将它编译成可执行文件。

python python-import python-venv python-packaging
2个回答
0
投票

在这种情况下,要走的路不是通过虚拟环境。 我必须在我工作的公司做这件事——因为有些电脑没有互联网。

  1. 在您联网的计算机中创建一个目录, 您将在其中安装所有软件包。 就叫它
    env
    吧。
    $ mkdir -p /path/to/env
  2. 安装所需的包时,只需在
    pip install
    中添加:
    -t /path/to/env
    (目标目录为
    t
    ) 所以:
    pip install -t /path/to/env packagename
  3. 将您的
    env
    文件夹传输到您的离线计算机(通过 USB 或其他方式)
  4. /path/to/env
    添加到您的
    PYTHONPATH
    环境变量 在 Linux 或 mac 中将
    ~/.bashrc
    添加到其内容中:
    export PYTHONPATH=/path/to/env:$PYTHONPATH
    在 Windows 中,添加到您的:
    $profile.CurrentUserAllHosts
    $env:PYTHONPATH=C:/path/to/env;${$env:PYTHONPATH}
    (使用
    ;
    作为分隔符!)
    PYTHONPATH
    确定您的 Python 在哪里寻找包。 顺序很重要 - 从左到右搜索它。
  5. source ~/.bashrc
    在 Linux 中
    . $profile.CurrentUserAllHosts
    在 Windows 中 使输入的更改被执行,从而有效。

瞧,现在您的 Python 将能够在您的文件夹中找到包!

系统范围或非系统范围的python

我不知道——我自己没试过。

你可以通过给 python.exe (windows) 或 python 二进制文件 (linux/mac=unix-derived) 的绝对路径。

在 unix 派生系统中,你可以这样做:

env PYTHONPATH=/path/to/env /path/to/python /path/to/script.py

使 PYTHONPATH 只对这个调用有效。

在 Windows 中,你可以使用一个函数来做到这一点,例如在 PowerShell

myscript () {
  local PATH=/path/to/python;$env:PYTHON
  local PYTHONPATH=/path/to/env
  python /path/to/script.py
}

myscript

然后,在函数外,变量保持不变。


0
投票

答案很简单,虚拟环境不适合这种情况。便携式/嵌入式 Python 是正确的选择。此处的视频https://www.youtube.com/watch?v=z8kgu74jERM

© www.soinside.com 2019 - 2024. All rights reserved.