Всегда загружайте tar.gz с сервера pypi

У меня есть локальный сервер pypi, на котором я загружаю пакеты из https://pypi.org/simple/

Я запустил команду

pip install -d /srv/pypi/ cryptography==2.2.2

И он установил cryptography-2.2.2-cp34-abi3-manylinux1_x86_64.whl на моем локальном сервере pypi.

Когда я пытаюсь использовать этот сервер pypi для загрузки пакета на платформе, отличной от Linux, это терпит неудачу.

Затем я загрузил cryptography-2.2.2.tar.gz и вставил локальный pypi, тогда он отлично работает.

Как я могу сказать в команде pip install -d всегда загружать tar.gz для этого пакета?

Вы пробовали --no-binary или --no-use-wheel?

jordanm 07.05.2018 21:10
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
1 520
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Укажите флаг --no-binary. Чтобы использовать sdist для криптографии:

pip install --no-binary cryptography cryptography 

Чтобы использовать sdist для всего:

pip install --no-binary :all: cryptography

Если нам нужно установить двоичный файл, то есть ли способ сказать им установить для MAC, Linux и Win32?

Nilesh 08.05.2018 16:29

pip сделает это автоматически на основе тегов платформы в имени файла .whl

wim 08.05.2018 16:36

да, но мой сервер pypi развернут на Linux, и он устанавливает .whl только для Linux. Есть пользователи, которые используют Windows и Mac и используют наш локальный сервер pypi.

Nilesh 08.05.2018 16:43

не имеет значения, на какой платформе размещен индекс. вы загружаете несколько колес для всех разных платформ в свой индекс, pip выберет правильный для загрузки для клиентской платформы во время установки.

wim 08.05.2018 17:37

Я согласен, но когда я сделаю pip install -d /srv/pypi cryptography, он установит только колесо linux, потому что там, где я запускал эту команду, это linux, но я должен сказать, что, пожалуйста, загрузите для всех платформ в /srv/pypi

Nilesh 08.05.2018 17:42

Вы должны установить колесо Linux только для платформы Linux. Так в чем проблема? Если вы хотите скачать колеса другой платформы, вы можете просто файлы wget или curl непосредственно из индекса.

wim 08.05.2018 18:13

Может быть это моя ошибка, я не объясняю в вопросе. У меня есть локальный сервер pypi, развернутый на Linux. Мы используем этот локальный сервер pypi для нашей локальной сборки, развертывания. У нас есть jenkins, работающие на Linux, поэтому у нас нет проблем с этой сборкой. У некоторых разработчиков есть Mac и Windows, когда они пытаются запустить сборку локально, выдает ошибку, если пакет не найден. На данный момент я делаю это вручную, wget пакет, но хочу знать, есть ли способ указать эту платформу в команде pip install -d /srv/pypi?

Nilesh 08.05.2018 23:23

Нет, нет. Вам нужно либо загрузить файлы bdist для пользователей Mac и Windows, либо заставить их использовать sdist / build локально. Если они собирают локально, им необходимо заранее установить все компоненты сборки (заголовки разработки, компиляторы C++ и т. д.).

wim 08.05.2018 23:30

да, я столкнулся только с этой проблемой :(. cryptography нужен openssl.h, и при загрузке tar.gz для этого пакета он пытается создать и выдает ошибку для этого файла. Есть ли способ узнать ссылку для Mac или Windows? Я могу добавить это в мой автоматизированный скрипт, но не хочу делать это вручную. Например, команда give me url for crytpography==2.2.2 for windows

Nilesh 09.05.2018 00:05

Нет. Если вы хотите установить из sdist, вы должны сделать это вручную. Вот почему лучше создать колеса для всех платформ, которые вам нужны, и загрузить их в свой индекс (потому что тогда пользователям не нужны заголовки для разработки).

wim 09.05.2018 00:40

Другие вопросы по теме