我对Python中的egg文件有疑问.
我有很多由代码组织的Python代码,我正在尝试创建egg文件.我正在遵循指示,但它们很常见.
根据它,似乎我需要一个setup.py文件.
java -jar <jar file>呢?请展示为python 2.x创建python包的简单和最新标准方法
我希望稍后使用pip来安装软件包.
包应该包含一个类:
class hello:
def greet(self):
print "hello"
Run Code Online (Sandbox Code Playgroud)
之后应该可以执行以下操作:
pip install my_package-0.1.1....
Run Code Online (Sandbox Code Playgroud)
然后使用它:
from my_package import hello
h = hello.hello()
h.greet()
Run Code Online (Sandbox Code Playgroud)
我要的是:
我找到了几个howtos,但我仍然不确定这个非常简单和剥离的情况(没有嵌套包,删除所有文件和功能,可以在最简单的情况下省略)将如何处理,这是现代的这样做的方式.
我希望这个问题进入社区维基状态,所以你不会得到任何积分,我会给出足够的时间,并在几天之后标记答案,同时考虑投票和评论.
编辑:
我有一个我要分享的第一个运行示例,我使用了Marius Gedminas的答案.它不包含应该存在的所有内容,但它有效,因此它可以展示技术过程的核心.要添加更多必要部件,请阅读下面的Marius的答案.
目录结构:
MyProject/
setup.py
my_package.py
README.txt
MANIFEST.in
Run Code Online (Sandbox Code Playgroud)
setup.py:
from setuptools.import setup
setup(name='MyProject',
version='0.1',
py_modules=['my_package'])
Run Code Online (Sandbox Code Playgroud)
my_package.py:
class hello:
def greet(self):
print "hello"
Run Code Online (Sandbox Code Playgroud)
MANIFEST.in:
include *.txt
Run Code Online (Sandbox Code Playgroud)
要从此文件夹创建包,请进入MyProject文件夹并运行:
$ python setup.py sdist
Run Code Online (Sandbox Code Playgroud)
这将MyProject-0.1.tar.gz在子文件夹中创建一个文件dist/.将此文件复制到目标计算机上的文件夹中.
在目标计算机上运行此命令,该文件夹包含MyProject-0.1.tar.gz:
sudo pip install MyProject-0.1.tar.gz
Run Code Online (Sandbox Code Playgroud)
现在可能需要在目标计算机上注销并重新登录,因此将找到该程序包.之后,您可以使用python shell在目标机器上测试包:
$ python
>>> import my_package …Run Code Online (Sandbox Code Playgroud) 有没有办法将Python文件组合在一起,类似于Java中的JAR?我需要一种打包Python类和函数的方法,但与标准模块不同,我希望它在一个文件中.
有没有人知道是否有任何工具可以将一个使用多个文件和模块的Python项目打包到一个脚本中?