Pycharm: как собрать и установить (на другой компьютер) пользовательский модуль?

#python #build #module #pycharm #installation

#python #сборка #модуль #pycharm #установка

Вопрос:

В pycharm (2018.3.5 community edition) Я создал новый проект my_module. В каталоге my_module я создал новый (python) файл mymodule.py, в который я поместил:

 LOG_LEVEL = 1

def print_text(text):
    print(text)

class MyClass:
    def __init__(self, text):
        self.text = text

    def print(self):
        print(self.text)


if __name__ == '__main__':
    print('LOG_LEVEL =', LOG_LEVEL)
    print_text('abc')
    obj = MyClass('test')
    obj.print()
  

Если запустить mymodule.py Я получаю вывод:

 LOG_LEVEL = 1
abc
test
  

что нормально.

Я хотел бы использовать этот mymodule.выполните py приватно на нескольких компьютерах простым import mymodule способом (из любого места). Я узнал, что могу использовать меню pycharm Инструменты> Создать setup.py для создания setup.py с содержимым:

 from setuptools import setup

setup(
    name='mymodule',
    version='0.0.1',
    packages=[''],
    url='',
    license='',
    author='myself',
    author_email='',
    description=''
)
  

Если я ввожу (cwd) каталог my_module (в котором находится mymodule.py) и выполнить:

 sudo pip3 install .

Processing /home/user/Python/my_module
Installing collected packages: mymodule
  Running setup.py install for mymodule ... done
Successfully installed mymodule-0.0.1
  

После этого действия я могу запустить интерпретатор python из pycharm в любой папке и выполнить:

 Python 3.7.2 (default, Jan 10 2019, 23:51:51) 
[GCC 8.2.1 20181127] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import mymodule
>>> mymodule.LOG_LEVEL
1
>>> mymodule.print_text('abc')
abc
>>> obj = mymodule.MyClass('test')
>>> obj.print()
test
  

Что нормально. Я прочитал, что вместо sudo pip3 install . я могу использовать sudo install -e . , который будет обновлять mymodule в репозитории python при каждом изменении mymodule.py (еще не пробовал, но я бы предпочел обновлять mymodule от версии к версии вручную).

Для компьютера разработки пока все хорошо. Но если я хочу установить mymodule на какой-либо другой компьютер, что мне делать? Я считаю, что я должен создать tar.gz из каталога my_module со всеми необходимыми файлами перенесите это tar.gz файл на другой компьютер, а затем выполнить там… что?

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

Я заметил, что в pycharm есть пункт меню Инструменты> Выполнить setup.py Задача, которая предоставляет (не все параметры видны) что-то вроде этого:

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

Может кто-нибудь дать мне подсказку, как:

  1. обновить модуль на компьютере разработчика? Должен ли я просто увеличить версию в setup.py и после этого выполнить sudo pip3 install . , если я хотел бы вручную контролировать, когда новая версия будет выпущена локально?
    Есть ли лучший способ (меньше шагов) каким-либо образом сделать это непосредственно из pycharm?

  2. Какой был бы самый простой способ (я хотел бы использовать скрипт для копирования и установки mymodule на некоторых других компьютерах) установить / обновить mymodule на других компьютерах (конфиденциально)?

Ответ №1:

Если вы не хотите публиковать свой модуль на pypi, то самый простой вариант частной публикации — поместить свой код в github и объявить его зависимостью VCS в других проектах. Смотрите это для получения более подробной информации.

Или еще проще, просто извлеките тег git, который обновляет вашу библиотеку, и pip установит локальный извлеченный код.

Кстати, pycharm не имеет к этому никакого отношения. Я бы рекомендовал вам также привыкнуть к инструментам командной строки python.

Комментарии:

1. Что не так с tar.gz подход? На данный момент у меня нет учетной записи github.