这可能是“再次蟒蛇项目”的一个主题,但我感兴趣的是如何创建一个项目,例如一个简单的游戏,它将有一个安装程序,所以用户只需加倍clcik并安装一个工作游戏在一些目录中(稍后指定)。我正在寻找setup.py,distutils,easy_install和pip,但mu项目一直说在/ home / user / install_dir中的安装不在env.variable PYTHONPATH中,我在python sys.path中更改了...我只是问我如何构建我的项目,所以它是:
提前致谢。
答案 0 :(得分:0)
如果我理解你的问题,你需要一种方法来分发Python项目及其所有依赖项。 你有没有试过PyInstaller。它允许您将您(和所有需要的)Python模块“冻结”为一个可执行文件。它还提供了根据需要设置环境的机制。
答案 1 :(得分:0)
在GNU / Linux下,安装软件的标准方法是通过存储库。这就是你如何获得自动更新和依赖安装,这是你应该去的方式。
有时你会发现像mypackage.deb
或mypackage.rpm
这样的“二进制包”,它们将通过双击来安装。但是,这些软件包通常与您在存储库中放置的内容相同,因此准备它们的难度相同,但您将失去存储库附带的好处。
GNU / Linux下的打包更接近艺术而不是科学,因为每个主要的发行版似乎都以开发自己的包管理器而自豪,并且它们彼此之间存在很大差异。如果您在ubuntu下,并且您的软件是免费的(如“言论自由”),您可以利用extensive documentation及其freely available PPA's [某种“迷你存储库”]。
Python - 正如您已经发现的那样 - 提供了基于PyPI(Python包索引)的替代“包管理器”,但通常不建议在* nix系统上使用它,因为通过PyPI安装的包不知道那些已经存在的包在您的系统中通过主程序包管理器,因此您可能最终会有重复的包或相同包的不同版本。
从设计的角度来看,更糟糕的是PyInstaller,它会创建大型可执行文件(后来被压缩),包括你需要运行的软件。尽管它的名字,PyInstaller不是安装人员。它只是创建了大量可执行文件。来自their FAQ:
尽管它的名称(与其历史根源有更多关系),PyInstaller用于将Python程序转换为本机可执行形式,不需要运行现有的Python安装。构建安装程序完全超出了PyInstaller的范围。
现在,至于你的要求:
在dirs中订购
所有包管理器都会自动执行此操作。目标目录依赖于目标系统(即:您从不硬编码源文件的目录位置,是决定存储它们的位置的系统)。
当然,PyInstaller不会做任何排序。用户可安装
在GNU / Linux系统上,除非用户具有root权限[无论从存储库中提取包还是二进制文件,否则无法执行此操作,因为阻止部分是用户没有对系统范围目录的写权限]。你可以做的最接近的是用户在他的主文件夹中创建一个目录树(例如在~/.local
下并将你的源文件放在那里。如果系统已经具有所需的依赖关系,这很有效,但是如果你的来源说取决于未安装的C lib,你运气不好。
包括所有需要的库(我认为这是我的setup.py-es唯一的工作选项)
这是包管理器的主要功能之一(deb,rpm,yum ......)。 PyPI将能够为您的程序提取 python 依赖项,但它无法提取二进制项[因此,如果您的依赖项是例如C库的绑定,您将获得绑定,但你必须到别处的C库]。
底线是:包装很难,周围没有简单的方法。