【问题标题】:Using Python virtualenvs created in host machine on a guest VM使用在来宾 VM 上的主机中创建的 Python virtualenvs
【发布时间】:2015-07-23 10:44:12
【问题描述】:

我的主机上有一个目录,其中包含一个 virtualenv。此目录与我必须在其上运行一些 Python 脚本(包含在同一目录中)的虚拟机共享。

当我在主机上的 virtualenv 中运行 Python 脚本时,脚本可以毫无问题地看到/使用 venv 包。但是,当我尝试在激活了相同 venv 的虚拟机中运行某些东西时,Python 看不到这些包。

一种解决方法是在客户机中创建一个新的 virtualenv 并使用主机的 requirements.txt 来填充包。另一个“但是”:我无法在来宾机器上安装 virtualenv。我运行pip install virtualenv,它等待了将近一分钟,然后我得到以下信息:

Cannot fetch index base URL https://pypi.python.org/simple/
Could not find any downloads that satisfy the requirement virtualenv
Cleaning up...
No distributions at all found for virtualenv
Storing debug log for failure in /home/mininet/.pip/pip.log

日志中的重要部分是:

usr/bin/pip run on Thu Jul 23 03:29:31 2015
Downloading/unpacking virtualenv
  Getting page https://pypi.python.org/simple/virtualenv/
  Could not fetch URL https://pypi.python.org/simple/virtualenv/: connection error: HTTPSConnectionPool(host='pypi.python.org', port=443): Max retries exceeded with url: /simple/virtualenv/ (Caused by <class 'socket.gaierror'>: [Errno -2] Name or service not known)

FWIW 我正在使用 VirtualBox 和 Mininet VM (Ubuntu)。 VM 可以访问 Internet。

那么,我的主要问题是为什么我不能在客户机中使用主机 venv 的包,即使使用相同的共享 venv?

两个次要问题是为什么我不能在来宾机器上安装 virtualenv,以及如果来宾没有安装 virtualenv,我如何激活来宾机器中的共享 venv?

【问题讨论】:

    标签: python ubuntu pip virtualenv


    【解决方案1】:

    virtualenv 中的文件包含在主机系统上工作但可能不在来宾系统上工作的绝对文件路径。您可以通过使 virtualenv 可重定位来解决这个问题(在主机系统上运行):

    virtualenv --relocatable ENV
    

    documentation 中的更多信息(和注意事项)。

    此外,您没有提及主机操作系统是什么 - 正如文档所述,virtualenv 只能在操作系统相同的情况下共享,因为库位置和二进制格式等原因。

    (我不知道为什么你不能在来宾上创建 virtualenv - 你能在那里 wget https://pypi.python.org/simple/virtualenv/ 吗?)

    【讨论】:

    • 天啊!其中一件事应该是显而易见的,但事实并非如此。事实上,主机系统是 OSX,而​​客户系统是 Ubuntu,所以即使没有路径问题,它也不太可能工作。但是relocatable 对未来很有帮助。我不知道昨天 VM pip 发生了什么,但是在重新启动计算机后,我可以安装 virtualenv,我将为来宾启动一个新的虚拟环境。谢谢!
    • 我发现如果我在一个无线网络上暂停它并在另一个无线网络上恢复它,我的 VM 会失去网络连接 - 我认为这与 DHCP 有关。如果我重新启动 VM,它通常会恢复。
    猜你喜欢
    • 2018-08-29
    • 2017-09-03
    • 2020-09-28
    • 1970-01-01
    • 2014-02-05
    • 2012-04-12
    • 1970-01-01
    • 2018-08-30
    • 1970-01-01
    相关资源
    最近更新 更多