[英]Pycharm: How to build and install (on other computer) custom module?
在pycharm(2018.3.5社區版)中,我創建了一個新項目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
這沒關系。
我想通過簡單的import mymodule
(從任何位置)私下在幾台計算機上使用mymodule.py。 我發現我可以使用pycharm的菜單Tools> Create 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
執行此操作后,我可以在任何文件夾中從pycharm啟動python解釋器並執行:
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.py時都會更新python存儲庫中的mymodule(尚未嘗試過,但我寧願手動將mymodule從版本更新到版本)。
對於開發計算機到目前為止是如此的好。 但如果我想在其他計算機上安裝mymodule,我該怎么辦? 我相信我應該從my_module目錄中構建一個包含所有必要文件的tar.gz,將這個tar.gz文件傳輸到其他計算機而不是在那里執行......什么?
mymodule應該保持私密,我不想公開暴露它(我還在學習過程中)。
我注意到pycharm有菜單選項Tools> Run setup.py Task,它提供了(並非所有選項都可見),如下所示:
有人可以給我一個暗示如何:
在開發計算機上更新模塊? 我應該只在setup.py中增加版本,然后執行sudo pip3 install .
如果我想手動控制何時在本地發布新版本?
有沒有更好的方法(更少的步驟)直接從pycharm以某種方式做到這一點?
什么是最簡單的方法(我想使用腳本在其他計算機上復制和安裝mymodule)在其他計算機上安裝/更新mymodule(私有)?
如果您不想在pypi上發布模塊,那么最簡單的私有發布版本是將您的代碼放在github中,並將其聲明為其他項目中的VCS依賴項。 有關詳細信息,請參閱此
或者更簡單的只是檢查一個git標簽,你的庫和pip的版本安裝本地檢出的代碼。
順便說一句,pycharm與此無關。 我建議你也習慣命令行python工具。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.