У меня есть локальный сервер 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. Чтобы использовать sdist для криптографии:
pip install --no-binary cryptography cryptography
Чтобы использовать sdist для всего:
pip install --no-binary :all: cryptography
Если нам нужно установить двоичный файл, то есть ли способ сказать им установить для MAC, Linux и Win32?
pip сделает это автоматически на основе тегов платформы в имени файла .whl
да, но мой сервер pypi развернут на Linux, и он устанавливает .whl только для Linux. Есть пользователи, которые используют Windows и Mac и используют наш локальный сервер pypi.
не имеет значения, на какой платформе размещен индекс. вы загружаете несколько колес для всех разных платформ в свой индекс, pip выберет правильный для загрузки для клиентской платформы во время установки.
Я согласен, но когда я сделаю pip install -d /srv/pypi cryptography, он установит только колесо linux, потому что там, где я запускал эту команду, это linux, но я должен сказать, что, пожалуйста, загрузите для всех платформ в /srv/pypi
Вы должны установить колесо Linux только для платформы Linux. Так в чем проблема? Если вы хотите скачать колеса другой платформы, вы можете просто файлы wget или curl непосредственно из индекса.
Может быть это моя ошибка, я не объясняю в вопросе. У меня есть локальный сервер pypi, развернутый на Linux. Мы используем этот локальный сервер pypi для нашей локальной сборки, развертывания. У нас есть jenkins, работающие на Linux, поэтому у нас нет проблем с этой сборкой. У некоторых разработчиков есть Mac и Windows, когда они пытаются запустить сборку локально, выдает ошибку, если пакет не найден. На данный момент я делаю это вручную, wget пакет, но хочу знать, есть ли способ указать эту платформу в команде pip install -d /srv/pypi?
Нет, нет. Вам нужно либо загрузить файлы bdist для пользователей Mac и Windows, либо заставить их использовать sdist / build локально. Если они собирают локально, им необходимо заранее установить все компоненты сборки (заголовки разработки, компиляторы C++ и т. д.).
да, я столкнулся только с этой проблемой :(. cryptography нужен openssl.h, и при загрузке tar.gz для этого пакета он пытается создать и выдает ошибку для этого файла. Есть ли способ узнать ссылку для Mac или Windows? Я могу добавить это в мой автоматизированный скрипт, но не хочу делать это вручную. Например, команда give me url for crytpography==2.2.2 for windows
Нет. Если вы хотите установить из sdist, вы должны сделать это вручную. Вот почему лучше создать колеса для всех платформ, которые вам нужны, и загрузить их в свой индекс (потому что тогда пользователям не нужны заголовки для разработки).
Вы пробовали
--no-binaryили--no-use-wheel?