2011-04-05 102 views
3

作为一个开始的程序员(我宁愿做脚本),我正在努力处理越来越多的脚本和模块。python代码组织

目前,小脚本位于添加到我的pythonpath的常规文件夹中。特定的项目会获得自己的子文件夹,但越来越多的人尝试将这些项目的常规部分编写为可供其他项目使用的模块。但是我不能只导入它们,除非这个子文件夹也在我的Python路径中。

我不知道如何组织这一切。我很乐意为您提供关于组织(python)代码的提示和建议。谢谢!

+0

谢谢大家的回答。你指出了'__init __。py'的含义。这正是我所需要的:现在我将'__init __。py'添加到我想要导入的工作文件夹的每个子文件夹中。我所有的代码都在我想要的地方,并且易于导入。很好的帮助,谢谢! – saroele 2011-04-07 20:14:59

+0

P.S.您的脚本*是*编程。 :-)保持它,你会在你知道它之前回答问题。 – 2011-04-07 20:58:44

+0

谢谢柯克。你说得对,事情可以很快改变,尤其是所有这些专家帮助我:-) – saroele 2011-04-07 21:54:34

回答

2

请务必阅读有关Packages,特别是有关在要从中导入的目录中创建名为__init__.py的文件的部分。

我在我的主目录中有一个名为MyCompany的git存储库。从/usr/local/lib/python2.7/site-packages/到它有一个链接。 MyCompany里面有package1,package2,package3等。在我的代码中,我写了import MyCompany.package1.modulefoo。 Python看起来在site-packages,发现MyCompany。然后它找到package1子目录,并在其中包含__init__.py文件 - yay,一个包!然后它在该目录中导入modulefoo.py文件,并且我已关闭并正在运行。

+0

你写道:_ /有一个从/usr/local/lib/python2.7/site-packages/到它的链接._我正在开发windows。快捷方式会起作用吗? – saroele 2011-04-05 19:45:58

+0

我不知道。如果没有,您可以直接从该文件夹中工作,并为其创建一个漂亮的桌面快捷方式,以便您轻松找到它。这种安排在服务器上稍有不同,但如果你可以在工作站上对它进行整理,那么在时间到了的时候你可以计算出服务器部分。 – 2011-04-05 19:50:18

+0

根据您的Windows版本(从Windows Vista开始),您还可以使用符号链接:http://www.howtogeek.com/howto/windows-vista/using-symlinks-in-windows-vista/ – arie 2011-04-05 22:43:39

2

通用自定义模块应该去~/.local/lib/pythonX.Y/site-packages/usr/local/lib/pythonX.Y/site-packages如果它们应该提供给每个人。这两个路径都可以在您的$PYTHONPATH中自动获得。 (前者自Python 2.6起可用 - 请参阅PEP 370 – Per user site-packages directory。)

+0

感谢您的回答。这些是linux路径,对不对?当我安装一个新的Python版本时,'.../site-packages'中的模块不会被覆盖? – saroele 2011-04-05 19:44:29

+0

是的,这些是linux路径。这些地方的模块将不会被覆盖,因为核心Python在任何包含'local'的路径中都没有模块。除此之外,这两条路径是版本不可知的(注意两条路径中的“X.Y”部分)。 – igor 2011-04-05 19:52:13

+1

对于所有的Linux发行版来说,并不是这样,绝对不是FreeBSD(Python进入/ usr/local)和一些OS X软件包管理器(它位于/ opt中)。不过,关于站点包的部分单独保留是正确的。 – 2011-04-05 19:57:53