我安装了来自here的嵌入式python,标题为“Windows x86-64嵌入式zip文件”,但它没有安装pip,它也没有站点包,当我尝试做python get-pip.py
它无法运行因为这个文件有import pip
在里面。那么如何在嵌入式python环境中安装pip。
回溯(最近一次调用最后一次):文件“。\ getpip.py”,行20061,在main()文件“。\ getpip.py”,第194行,在主引导程序(tmpdir = tmpdir)文件“。\ getpip中。 py“,第82行,在bootstrap导入点文件”“,第961行,在_find_and_load文件”“,第950行,在_find_and_load_unlocked文件”“,第646行,在_load_unlocked文件”“,第616行,在_load_backward_compatible
目录结构是:
Directory: C:\Downloads\python-3.6.1rc1-embed-win32
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/4/2017 7:26 PM 157344 pyexpat.pyd
-a---- 3/4/2017 7:26 PM 97952 python.exe
-a---- 3/4/2017 7:26 PM 58016 python3.dll
-a---- 3/4/2017 7:26 PM 3263648 python36.dll
-a---- 3/4/2017 7:26 PM 2209284 python36.zip
-a---- 3/4/2017 7:26 PM 79 python36._pth
-a---- 3/4/2017 7:26 PM 96416 pythonw.exe
-a---- 3/4/2017 7:26 PM 23200 select.pyd
-a---- 3/4/2017 7:26 PM 866464 sqlite3.dll
-a---- 3/4/2017 7:26 PM 895648 unicodedata.pyd
-a---- 3/4/2017 7:26 PM 83784 vcruntime140.dll
-a---- 3/4/2017 7:26 PM 24224 winsound.pyd
-a---- 3/4/2017 7:26 PM 45216 _asyncio.pyd
-a---- 3/4/2017 7:26 PM 77984 _bz2.pyd
-a---- 3/4/2017 7:26 PM 101536 _ctypes.pyd
-a---- 3/4/2017 7:26 PM 215712 _decimal.pyd
-a---- 3/4/2017 7:26 PM 156832 _elementtree.pyd
-a---- 3/4/2017 7:26 PM 1042592 _hashlib.pyd
-a---- 3/4/2017 7:26 PM 183456 _lzma.pyd
-a---- 3/4/2017 7:26 PM 32416 _msi.pyd
-a---- 3/4/2017 7:26 PM 25760 _multiprocessing.pyd
-a---- 3/4/2017 7:26 PM 33952 _overlapped.pyd
-a---- 3/4/2017 7:26 PM 61600 _socket.pyd
-a---- 3/4/2017 7:26 PM 64160 _sqlite3.pyd
-a---- 3/4/2017 7:26 PM 1458848 _ssl.pyd
我最近遇到了同样的问题。我检查了文档的pip,他们似乎说这个用例不受支持等等。但无论如何,这是我的hack让模块工作。
我安装了,我的意思是解压缩嵌入式python到一个名为d:\ python的目录中。我假设模块将存在于同一目录中。
首先,要安装pip模块,我需要保存已删除的文件。我使用支持unix行终止符的文本编辑器更改了get-pip.py,方法是删除从get-pip.py文件中包含的blob中删除临时和解压缩树的rmtree行。
我改变了两个位置,但只需要最后一个位置。我在两个位置更改的行读取
shutil.rmtree(tmpdir, ignore_errors=True)
然后我修改了它(我不想打扰python缩进块):
print('shutil.rmtree(tmpdir, ignore_errors=True)')
我现在在修改后的get-pip.py上运行了我的python D:\ python \ python.exe,找到了文件解压缩到的临时目录。
我将这个目录(检查它包含一个main.py)文件复制到python安装D:\ python \ pip中(这是我希望我的模块存在的地方),确保D:\ python \ pip目录包含main.py文件。
pip模块现在安装在python目录中,但你需要进一步修改pip以删除上面的异常。我这样做是通过更改locations.py文件(在我的案例中位于D:\ python \ pip \ locations.py)来返回D:\ python的bin_py和bin_user位置。
即:
86 if WINDOWS:
....
bin_py = 'd:/python'
bin_user = 'd:/python'
我不得不将pip的user_dir更改为在多个VM之间共享的此驱动器上保留的某个位置。
pip模块现在运行正常,例如
d:\ python \ python.exe -m pip ...
即使明确说明嵌入version of python do not supports pip,他们也说可以小心谨慎。有一个简单的解决方法,在嵌入版本的python中使用pip。
PIP可以安装在嵌入式python中。你需要:
import site
声明。
python36.zip
.
# Uncomment to run site.main() automatically
import site
python get-pip.py
.\Scripts\pip --install --user pandas
你可以在pip issue 4207找到更多相关信息
也可以在python中以编程方式访问Pip作为命令(此示例安装pandas):
import pip
pip.main(['install'], 'pandas')
我如何将pip安装到可嵌入的python发行版中:
python ./get-pip.py
或从新创建的文件夹Lib / site-packages /复制文件夹(至少pip)到pythonXX.zip现在有可能here