Python 2.7 在没有internet连接的情况下安装Virtualenv

Python 2.7 在没有internet连接的情况下安装Virtualenv,python-2.7,pip,virtualenv,setup.py,Python 2.7,Pip,Virtualenv,Setup.py,我需要建立一个实验室环境,在那里观众可能不一定在会场有互联网连接。我只需要向观众解释几个软件包 我正试图利用virtualenv来完成这一切。因此,使用pip安装,我已经成功地安装了virtualenv。在此之后,我激活我的虚拟环境。然后在那里,我再次使用pip安装来安装其他需要的模块,比如请求等 现在,由于我的观众在培训期间可能没有互联网连接,我希望能够向他们分发我的virtualenv,这样他们就有一个完整的工作环境,可以开始学习培训的主要内容 我不知道如何将我的virtualenv分发给其

我需要建立一个实验室环境,在那里观众可能不一定在会场有互联网连接。我只需要向观众解释几个软件包

我正试图利用virtualenv来完成这一切。因此,使用pip安装,我已经成功地安装了virtualenv。在此之后,我激活我的虚拟环境。然后在那里,我再次使用pip安装来安装其他需要的模块,比如请求等

现在,由于我的观众在培训期间可能没有互联网连接,我希望能够向他们分发我的virtualenv,这样他们就有一个完整的工作环境,可以开始学习培训的主要内容

我不知道如何将我的virtualenv分发给其他人。据我所知,我能做到

pip freeze>requirements.txt

然后

pip安装-r requirements.txt

但上面的后者也需要在virtualenv内部完成才能工作。如果我错了,请纠正我

因此,我尝试编写一个python脚本来自动化所有这些内容,并且考虑到互联网连接问题,在我的自动化脚本中,我无法使用pip安装来安装virtualenv。因此,我改为使用setup.py来安装virtualenv

下面是我对脚本的尝试,但它不起作用

import os
import shutil
import sys
from os.path import expanduser
from os.path import join

home = expanduser("~")
newpath = join(home,"newFolder")
print newpath
if not os.path.exists(newpath):
    os.makedirs(newpath)

cwd = os.path.dirname(os.path.abspath(__file__))
print cwd
#virtenv = join(cwd,'virtualenv-13.1.2')
#print virtenv
setupFile = join(cwd,'setup.py')
string = sys.executable + " " + setupFile + " install"
print string
os.system(string)
# isntalling dependencies
string = "pip install -r requirements.txt"
os.system(string)
这个想法是——当用户在没有任何互联网的情况下运行上述脚本时,应该在其主目录下的新文件夹中设置virtualenv。然后在虚拟环境中,脚本应该运行pip install-r requirements.txt来安装所有必需的模块

到目前为止,上面的脚本没有完成所需的工作。我已将上述脚本与virtualenv安装文件放在同一目录中


我是不是想得很清楚?我怎样才能做到这一点呢?

我很确定,您要做的是通过在您的计算机上运行web服务器,用您想要分发的包建立自己的简单存储库,然后将您的服务器作为存储库添加到参加您的活动的人员-允许他们使用以下命令在本地网络上访问您的存储库:

pip安装-额外索引urlhttps://IP_ADDRESS_OF_YOUR_SERVER/ 你的应用程序名


有一个很好的关于如何设置这些的指南。

是的,这是正确的。但是除了上面提到的,还有其他的方法吗?有点像我想继续的方向吗?是的,设置您的本地存储库,使其拥有您需要的所有软件包,包括virtualenv和来自pip freeze>requirements.txt的输出。然后使用pip install-extra index url创建一个shell脚本https://YOUR_SERVER/ 对于virtualenv和项目的需求。在shell脚本中运行这样相对简单的命令几乎总是比在过于复杂的python脚本中更容易,但是您也可以将指定简单存储库位置的标志附加到python脚本中的命令中?难道不能用setup.py代替pip来安装virtualenv吗?通过setup.py安装virtualenv没有什么错-但是如果您要为通过pip安装的需求托管自己的repo,为什么不将virtualenv添加到repo中并通过pip安装它呢?这是有意义的。但我只是好奇为什么setup.py方法会引起任何问题。