можно ли использовать файлы внутри пакетов pip без их установки

Я работаю над проектом и клонировал репозиторий из github.
После первой компиляции я понял, что проект, который я клонировал, имеет некоторые зависимости, и они были в requirements.txt файле.

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

У меня есть два варианта:

  1. Использование virtualenv и установка этих пакетов внутри него

  2. Скачивание пакетов и использование их direct способом, используя import foldername

Я хочу избежать первого варианта, потому что у меня меньше контроля над моим проектом, и проблема становится все больше и больше, если, например, я был внутри virtualenv другого проекта и хотел запустить файл main.py моего проекта из его собственного virtualenv и т. Д. virtualenv от windows (файлы bat) до linux (файлы bash / sh) кажется мне некрасивым и направляет меня к подходам, которых я предпочитаю избегать.

Второй вариант - мой выбор. например, мне нужно использовать пакет future. Сценарий заключается в загрузке пакета с использованием pip download future, а после извлечения файла tar.gz внутри папки src я вижу папку пакета future, и я использую ее с import future_package.src.future, даже не касаясь чего-либо еще.

введите описание изображения здесь

Помимо os.path проблем (предполагающих, что я позабочусь о них):

Это хорошая практика?

Я не использую setup.py, препятствующий установке. Может ли это вызвать проблемы?

Есть ли лучший подход, требующий меньшего количества работы (например, второй), или лучший из упомянутых мной первого подхода?

ОБНОВЛЕНИЕ 1: я извлек пакеты future и certifi, которые были частью requirements моего проекта, и использовал их способом direct, и в данном конкретном случае он работает.


person AmirHossein    schedule 25.07.2017    source источник
comment
Честно говоря, я до сих пор не понимаю исходную предпосылку того, почему создание virtualenv и разрешение pip устанавливать все зависимости - такой ужасный шаг ...   -  person deceze♦    schedule 26.07.2017
comment
@deceze Это не ужасный ход, я сказал, что это вариант, я знаю, что когда-нибудь мне придется использовать virtualenv, и они являются идеальным выбором для быстрой разработки, но я лично стараюсь пропускать автоматические вещи, такие как pip, и хочу контролировать свои вещи , и если я могу просто extract, move и позвонить import, зачем мне использовать virtualenv для простого проекта (и, возможно, выполнимого для более сложных)?   -  person AmirHossein    schedule 26.07.2017
comment
Потому что зависимости могут стать очень сложными, и это как раз то, что менеджеры пакетов проблем, такие как pip, решают… !? Если есть только две зависимости, которые вы можете извлечь вручную, и они оказываются самодостаточными… отлично! Повезло тебе. Но подождите, пока вы не попытаетесь установить библиотеку с десятками зависимостей, каждая из которых также имеет десятки зависимостей. Удачи вам в отслеживании всех нужных версий вручную.   -  person deceze♦    schedule 26.07.2017
comment
@deceze ну я сказал простые проекты, но вы правы :)   -  person AmirHossein    schedule 26.07.2017
comment
Современная разработка программного обеспечения, которая в основном строит системы на системах на системах, имеет свои собственные сложности, и существуют такие инструменты, как pip и virtualenv, чтобы сделать эти сложности более управляемыми. Если вы хотите работать продуктивно / создавать сложные вещи, вам придется с этим смириться.   -  person deceze♦    schedule 26.07.2017
comment
@deceze, как насчет их установки внутри виртуального окружения и перемещения их из site-packages внутри виртуального виртуального сервера в каталог, в который я хочу их импортировать? Имеет ли использование virtualenv преимущества, чем это?   -  person AmirHossein    schedule 26.07.2017
comment
Я не совсем уверен, почему у вас возникло столько проблем ... Вы создаете virtualenv в каталоге, в котором хотите работать (в отличие от установки этих пакетов глобально). Кроме того, не стоит слишком сильно беспокоиться о деталях; установлены ли пакеты в каком-либо управляемом подкаталоге этого виртуального сервера или где-то еще, что вам нужно, не должно иметь большого значения. Вам не следует плыть против течения, если у вас нет для этого действительно веской причины.   -  person deceze♦    schedule 26.07.2017
comment
@deceze ну моя причина - переносимость. Предположим, я хотел запустить свой проект на Mac. что теперь? Я должен создать файл требований из моего проекта внутри Windows и написать сценарий для Mac: (1. создать venv 2. установить в нем пакеты файлов требований 3. запустить его) Я хочу исключить 1 и 2.   -  person AmirHossein    schedule 26.07.2017