运行一个python编译后的包上传到pypicloud服务器
running a python package after compiling and uploading to pypicloud server
各位,
在构建一个名为 myShtuff
的包并将其部署到本地 pypicloud 服务器后,我可以将它安装到一个单独的虚拟环境中。
一切似乎都正常,除了可执行文件的路径...
(venv)[ec2-user@ip-10-0-1-118 ~]$ pip freeze
Fabric==1.10.1
boto==2.38.0
myShtuff==0.1
ecdsa==0.13
paramiko==1.15.2
pycrypto==2.6.1
wsgiref==0.1.2
如果我直接尝试 运行ning 脚本,我得到:
(venv)[ec2-user@ip-10-0-1-118 ~]$ myShtuff
-bash: myShtuff: command not found
不过,我可以 运行 通过:
(venv)[ec2-user@ip-10-0-1-118 ~]$ python /home/ec2-user/venv/lib/python2.7/site-packages/myShtuff/myShtuff.py
..works
我在构建包时犯了错误吗? setup.cfg 或 setup.py 中的某处?
谢谢!!!
您的包中需要一个 __main__.py
,以及一个在 setup.py 中定义的入口点。
参见 here and here 但简而言之,当 运行 使用 python -m
和设置工具安装模块时,无论您的主要功能是什么,您的 __main__.py
运行 都是可以将任何你想要的任意函数 运行 作为脚本。你可以做其中一个或两个。您的 __main__.py
看起来像:
from .stuff import my_main_func
if __name__ == "__main__":
my_main_func()
并在 setup.py 中:
entry_points={
'console_scripts': [
'myShtuffscript = myShtuff.stuff:my_main_func'
]
这里,myShtuffscript
是你想要调用的可执行文件,myShtuff
你的包的名称,stuff
包中文件的名称(myShtuff/stuff.py
),以及 my_main_func
该文件中函数的名称。
您需要在 setup.py
中定义 entry_point
以便直接从命令行执行某些操作:
entry_points={
'console_scripts': [
'cursive = cursive.tools.cmd:cursive_command',
],
},
可以找到更多详细信息 here。
各位,
在构建一个名为 myShtuff
的包并将其部署到本地 pypicloud 服务器后,我可以将它安装到一个单独的虚拟环境中。
一切似乎都正常,除了可执行文件的路径...
(venv)[ec2-user@ip-10-0-1-118 ~]$ pip freeze
Fabric==1.10.1
boto==2.38.0
myShtuff==0.1
ecdsa==0.13
paramiko==1.15.2
pycrypto==2.6.1
wsgiref==0.1.2
如果我直接尝试 运行ning 脚本,我得到:
(venv)[ec2-user@ip-10-0-1-118 ~]$ myShtuff
-bash: myShtuff: command not found
不过,我可以 运行 通过:
(venv)[ec2-user@ip-10-0-1-118 ~]$ python /home/ec2-user/venv/lib/python2.7/site-packages/myShtuff/myShtuff.py
..works
我在构建包时犯了错误吗? setup.cfg 或 setup.py 中的某处?
谢谢!!!
您的包中需要一个 __main__.py
,以及一个在 setup.py 中定义的入口点。
参见 here and here 但简而言之,当 运行 使用 python -m
和设置工具安装模块时,无论您的主要功能是什么,您的 __main__.py
运行 都是可以将任何你想要的任意函数 运行 作为脚本。你可以做其中一个或两个。您的 __main__.py
看起来像:
from .stuff import my_main_func
if __name__ == "__main__":
my_main_func()
并在 setup.py 中:
entry_points={
'console_scripts': [
'myShtuffscript = myShtuff.stuff:my_main_func'
]
这里,myShtuffscript
是你想要调用的可执行文件,myShtuff
你的包的名称,stuff
包中文件的名称(myShtuff/stuff.py
),以及 my_main_func
该文件中函数的名称。
您需要在 setup.py
中定义 entry_point
以便直接从命令行执行某些操作:
entry_points={
'console_scripts': [
'cursive = cursive.tools.cmd:cursive_command',
],
},
可以找到更多详细信息 here。