如何为我自己的脚本创建setup.py文件?我必须使我的脚本全局化.(将它添加到/ usr/bin)所以我可以从控制台运行它只需输入:scriptName参数.操作系统:Linux. 编辑: 现在我的脚本是可安装的,但我怎样才能使它全局化?所以我可以从控制台运行它只是名字输入.
在组织python模块时,我的Mac OS X系统很乱.我在我的硬盘上到处都是软件包,没有特定的系统来组织它们.
你如何保持一切可管理?
我有很多使用通用定义的脚本.如何将它们分成多个文件?此外,在我的场景中无法以任何方式安装应用程序; 必须可以同时运行任意数量的版本,并且它必须在没有超级用户权限的情况下工作.我想出的解决方案是:
from . import加载它们.这种方法的缺点是我想将我的库放在除应用程序之外的其他目录中.__init__.py导入所有子模块的文件,最后用于from . import加载它们.保持代码组织,但维护__init__.py和限定名称需要一些开销.sys.path和
import.我倾向于这一点,但我不确定是否摆弄sys.path
好的代码.execfile
(exec在Python 3中).结合前两种方法的优点:每个模块只需要一行,我可以使用专用.另一方面,这避开了python模块概念并且对全局命名空间进行了规范.distutils.这将为所有python脚本安装库,并需要超级用户权限并影响其他应用程序,因此不适用于我的情况.什么是最好的方法?
早上好,
我目前正在编写一个python库.目前,模块和类以无组织的方式部署,没有合理的设计.当我接近更正式的版本时,我想重新组织类和模块,以便他们有更好的整体设计.我绘制了一个导入依赖关系图,我计划按层级聚合类.此外,我正在考虑对类进行一些修改,以减少这些依赖性.
您对可能复杂且正在制作的python库进行良好整体设计的策略是什么?你有什么有趣的建议吗?
谢谢
更新:
我确实在寻找一个经验法则.例如,假设发生这种情况(为清楚起见,删除了init .py)
foo/bar/a.py
foo/bar/b.py
foo/hello/c.py
foo/hello/d.py
Run Code Online (Sandbox Code Playgroud)
现在,如果您碰巧有d.py导入bar.b和a.py导入hello.c,我会认为这是一个糟糕的设置.另一个案例是
foo/bar/a.py
foo/bar/baz/b.py
foo/bar/baz/c.py
Run Code Online (Sandbox Code Playgroud)
假设a.py和b.py都导入c.你有三个解决方案:1)b导入c,导入baz.c 2)你在foo/bar中移动c.a.py导入c,b.py导入.c 3)你将c移动到其他地方(比如foo/cpackage/c.py)然后a和b导入cpackage.c
我倾向于更喜欢3),但如果c.py作为独立模块没有意义,例如因为你想将它保持为"私有"进入条形包,我会优先选择1).
还有许多其他类似的案例.我的经验法则是尽量减少依赖关系和交叉的数量,以防止高度分支,高度交织的设置,但我可能是错的.