Пип со встроенным питоном

Отсюда я установил встроенный python под названием "Встраиваемый zip файл Windows x86-64", но на нем не установлен pip, также нет пакетов сайтов, и при попытке сделать python get-pip.py не удалось запустить потому что этот файл имеет import pip в нем. Итак, как я могу установить pip во встроенной среде Python.

Traceback (последний вызов был последним): Файл ".\Getpip.py", строка 20061, в файле main() ".\Getpip.py", строка 194, в основном файле начальной загрузки (tmpdir = tmpdir) ".\Getpip. py ", строка 82, в файле начальной загрузки импорта начальной загрузки" ", строка 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

Ответ 1

Недавно я столкнулся с той же проблемой. Я проверил документацию для pip, и они, похоже, говорят, что этот прецедент не поддерживается и т.д. Но так или иначе, вот мой взлом для работы модулей.

Я установил, и я имею в виду размонтированный встроенный python в каталог с именем d:\python. Я предположил, что модули будут жить в том же каталоге.

Во-первых, чтобы установить модуль pip, мне нужно было сохранить экстратированные файлы. Я изменил get -pip.py с помощью текстового редактора, который поддерживал терминаторы строк unix, удалив строки rmtree, которые удаляют временное и распакованное дерево из блоба, содержащегося в файле get-pip.py.

Я изменил оба местоположения, но нужен только последний. Строка, которую я изменил в двух местах, читала

shutil.rmtree(tmpdir, ignore_errors=True)

и я изменил его таким образом (я не хотел беспокоиться с блоками отступа python):

print('shutil.rmtree(tmpdir, ignore_errors=True)')

Теперь я запустил свой python D:\python\python.exe на модифицированном get-pip.py и нашел временный каталог, в который были распакованы файлы.

Я скопировал этот каталог (проверьте, что он содержит файл main.py) в установке python D:\python\pip (здесь я хочу, чтобы мои модули работали), гарантируя, что каталог D:\python\pip содержал файл main.py.

Модуль pip теперь установлен в каталоге python, но вам нужно еще больше взломать pip, чтобы удалить исключение выше. Я сделал это, изменив файл locations.py(в моем случае, расположенный в D:\python\pip\locations.py), чтобы вернуть места bin_py и bin_user D:\python.

т.е.:

86 if WINDOWS:
....
bin_py = 'd:/python'
bin_user = 'd:/python'

Мне пришлось изменить user_dir для pip на место, которое будет сохраняться на этом диске, который был разделен между несколькими виртуальными машинами.

Теперь модуль pip теперь работает нормально, например

d:\python\python.exe -m pip...

Ответ 2

Даже если явно указано, что версия python для встраивания не поддерживает pip, они говорят, что это возможно с осторожностью. Существует простой способ использования pip внутри встроенной версии python.

PIP может быть установлен во встроенном питоне. Вам необходимо:

  • Загрузите и распакуйте python "... встраиваемый zip файл". (источник: https://www.python.org/downloads/)

  • отредактируйте файл '[папка python]\python36._pth'. Раскомментируйте утверждение import site, как было предложено в комментарии выше.

    python36.zip
    .
    
    # Uncomment to run site.main() automatically
    import site
    
  • Загрузите get-pip.py в папку установки python (источник: https://pip.pypa.io/en/stable/installing/)

  • выполнить команду get-pip script. это устанавливает pip в каталог [python]\Scripts

    python get-pip.py
    
  • запускайте pip прямо из командной строки, так как pip - исполняемая программа (в данном примере это установка pandas)

    .\Scripts\pip --install --user pandas
    

Вы можете найти больше информации об этом в пипс 4207

Ответ 3

Пип также может быть запрограммирован в python как команда (в этом примере устанавливается pandas):

import pip
pip.main(['install'], 'pandas')

(Источник: Установка модуля python внутри кода)

Ответ 4

как я установил pip в встраиваемый дистрибутив Python:

  1. распакуйте встраиваемый дистрибутив python и скопируйте туда
  2. запустить python./get-pip.py (получил здесь)
  3. ЛИБО просто раскомментируйте строку import site внутри файла pythonXX._pth ИЛИ скопируйте папки (не менее pip) из только что созданной папки Lib/site-packages/в pythonXX.zip

теперь возможно python -m pip...