使用在guest虚拟机上的主机中创建的Python virtualenvs

时间:2015-07-23 10:44:12

标签: python ubuntu pip virtualenv

我的主机上有一个包含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?

1 个答案:

答案 0 :(得分:0)

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

Microsoft.XLangs.BaseTypes.Adress = /XXXX/{EmpId}
Microsoft.XLangs.Basetypes.TransportType = "WCF-WebHTTP"

documentation中的更多信息(和警告)。

另外,你没有提到主机操作系统是什么 - 正如文档所说明的那样,只有操作系统是相同的才能共享virtualenv,因为库位置和二进制格式之类的东西。

(我不知道你为什么不能在客人身上创造虚拟世界 - 你能在那里https://pypi.python.org/simple/virtualenv/吗?)