如何从 .egg 文件夹离线安装新版本的 python 包?
How to install offline a new version of python package from a .egg folder?
我正在尝试在没有互联网连接的机器上安装 statsmodels 的开发版本。我已经在我自己的机器上下载并安装了这个包(经过测试并且工作正常)并且我已经将生成的文件夹复制到离线机器上的 Anaconda\Lib\site-packages
下。
我还保留了现有的 statsmodels 文件夹(因为这是我机器上发生的情况),因此两台机器中的结构看起来像
site-packages\
statsmodels
statsmodels-0.6.1-py2.7.egg-info
statsmodels-0.8.0-py3.5-win-amd64.egg\
EGG-INFO
statsmodels
内部 statsmodels 文件夹(低于 0.8.0 的文件夹)包含我要导入的最新版本。为了让进口商选择正确的版本,我复制了一个出现在我的机器上的名为 easy-install.pth
的文件,其内容如下
import sys; sys.__plen = len(sys.path)
./statsmodels-0.8.0-py3.5-win-amd64.egg
import sys; new = sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p = getattr(sys, '__egginsert', 0); sys.path[p:p] = new; sys.__egginsert = p + len(new)
现在导入器选择了正确的版本 (0.8.0),但它无法导入 DLL,出现以下错误
C:\Anaconda2\lib\site-packages\statsmodels-0.8.0-py3.5-win-amd64.egg\statsmodels\tsa\statespace\tools.py in set_mode(compatibility)
59 if not compatibility:
60 from scipy.linalg import cython_blas
---> 61 from . import (_representation, _kalman_filter, _kalman_smoother,
62 _simulation_smoother, _tools)
63 compatibility_mode = False
C:\Anaconda2\lib\site-packages\statsmodels-0.8.0-py3.5-win-amd64.egg\statsmodels\tsa\statespace\_representation.py in <module>()
6 print(__name__,__file__)
7 imp.load_dynamic(__name__,__file__)
----> 8 __bootstrap__()
C:\Anaconda2\lib\site-packages\statsmodels-0.8.0-py3.5-win-amd64.egg\statsmodels\tsa\statespace\_representation.py in __bootstrap__()
5 __loader__ = None; del __bootstrap__, __loader__
6 print(__name__,__file__)
----> 7 imp.load_dynamic(__name__,__file__)
8 __bootstrap__()
ImportError: DLL load failed: The specified module could not be found.
我检查了最后一个函数调用中的变量 __file__
,它指向状态空间文件夹下存在的 DLL _representation.cp35-win_amd64.pyd
。
有谁知道这个问题的解决方法,或者我如何告诉进口商找到丢失的模块?
我建议你使用 pip
列出所有需要的库并下载它们,然后分发下载的库并安装。
列出所有需要的库
来自与目标服务器具有相同配置的 server/workstation(相同 OS,相同的系统范围 Python)。
创建一个新的空 virtualenv 并像往常一样安装 statsmodels:
virtualenv venv
source venv/bin/activate
pip install statsmodels
然后列出所有需要的包 pip freeze:
pip freeze > requirements.txt
下载所有需要的库
创建目录存放所有eggs/wheels,并使用pip download下载库:
mkdir libs
cd libs/
pip download --no-deps -r requirements.txt
分发到您的目标服务器
将 libs
目录复制到您的目标服务器。
创建一个 virtualenv 并从您的 libs
目录安装:
virtualenv venv
source venv/bin/activate
pip install --find-links libs/ statsmodels
应该可以。
我正在尝试在没有互联网连接的机器上安装 statsmodels 的开发版本。我已经在我自己的机器上下载并安装了这个包(经过测试并且工作正常)并且我已经将生成的文件夹复制到离线机器上的 Anaconda\Lib\site-packages
下。
我还保留了现有的 statsmodels 文件夹(因为这是我机器上发生的情况),因此两台机器中的结构看起来像
site-packages\
statsmodels
statsmodels-0.6.1-py2.7.egg-info
statsmodels-0.8.0-py3.5-win-amd64.egg\
EGG-INFO
statsmodels
内部 statsmodels 文件夹(低于 0.8.0 的文件夹)包含我要导入的最新版本。为了让进口商选择正确的版本,我复制了一个出现在我的机器上的名为 easy-install.pth
的文件,其内容如下
import sys; sys.__plen = len(sys.path)
./statsmodels-0.8.0-py3.5-win-amd64.egg
import sys; new = sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p = getattr(sys, '__egginsert', 0); sys.path[p:p] = new; sys.__egginsert = p + len(new)
现在导入器选择了正确的版本 (0.8.0),但它无法导入 DLL,出现以下错误
C:\Anaconda2\lib\site-packages\statsmodels-0.8.0-py3.5-win-amd64.egg\statsmodels\tsa\statespace\tools.py in set_mode(compatibility)
59 if not compatibility:
60 from scipy.linalg import cython_blas
---> 61 from . import (_representation, _kalman_filter, _kalman_smoother,
62 _simulation_smoother, _tools)
63 compatibility_mode = False
C:\Anaconda2\lib\site-packages\statsmodels-0.8.0-py3.5-win-amd64.egg\statsmodels\tsa\statespace\_representation.py in <module>()
6 print(__name__,__file__)
7 imp.load_dynamic(__name__,__file__)
----> 8 __bootstrap__()
C:\Anaconda2\lib\site-packages\statsmodels-0.8.0-py3.5-win-amd64.egg\statsmodels\tsa\statespace\_representation.py in __bootstrap__()
5 __loader__ = None; del __bootstrap__, __loader__
6 print(__name__,__file__)
----> 7 imp.load_dynamic(__name__,__file__)
8 __bootstrap__()
ImportError: DLL load failed: The specified module could not be found.
我检查了最后一个函数调用中的变量 __file__
,它指向状态空间文件夹下存在的 DLL _representation.cp35-win_amd64.pyd
。
有谁知道这个问题的解决方法,或者我如何告诉进口商找到丢失的模块?
我建议你使用 pip
列出所有需要的库并下载它们,然后分发下载的库并安装。
列出所有需要的库
来自与目标服务器具有相同配置的 server/workstation(相同 OS,相同的系统范围 Python)。
创建一个新的空 virtualenv 并像往常一样安装 statsmodels:
virtualenv venv
source venv/bin/activate
pip install statsmodels
然后列出所有需要的包 pip freeze:
pip freeze > requirements.txt
下载所有需要的库
创建目录存放所有eggs/wheels,并使用pip download下载库:
mkdir libs
cd libs/
pip download --no-deps -r requirements.txt
分发到您的目标服务器
将 libs
目录复制到您的目标服务器。
创建一个 virtualenv 并从您的 libs
目录安装:
virtualenv venv
source venv/bin/activate
pip install --find-links libs/ statsmodels
应该可以。