2013-04-23 93 views
1

我对python相当陌生,并且来自C#背景。在C#l中,第三方库通常存储在项目文件夹中。引用和导入第三方python库

这意味着库完全在项目内部。然后该项目不依赖于项目文件夹以外的任何东西(当然除了.net框架)。

我真的很喜欢这个结构,并试图通过将库复制到lib目录中,在项目根目录中并在应用程序启动时将lib文件夹添加到python路径来成功地镜像python。

我担心可能会有一些东西我可以忽略这样做,因为我查看了一下周围有没有真正看到任何人在thw python社区这样做。

我的问题很简单 - 这可以吗?通过简单地转储必要的.py库,而不是使用简单安装,从而将系统级库中的库存储在站点包中,我是否可能会错过某些内容?

请随时让我知道你可以看到的任何缺点,不管它有多简单。

谢谢!

+1

它应该没问题......如果你正在分发它,请注意丢失了DLL。一个更好的系统是把它们留在原地,并使用pyinstaller或类似的东西来打包你的项目进行分发,这通常会依赖关系 – 2013-04-23 22:25:38

回答

1

我会支持使用virtualenvpip作为开发目的。这会给你准确的沙箱,你已经习惯了。至于分发,请使用setup.py并重新使用requirements.txt文件,您可以使用该文件与pip install -r安装依赖关系,以生成install_requires参数setuptools.setup。我一直有意设立一个例子来说明这一点 - 请检查https://github.com/dave-shawley/setup-example,这里有一些很好的例子。我计划在时间允许的基础上再增加一点。

+0

感谢您的回复..我承认我没有充分调查virtualenv。然而,举例来说,我想将我的代码签出到以前没有的计算机上......使用虚拟env并不意味着我必须在我的系统上安装第三方库(即使它是由virtualenv自动完成的)?理想情况下,我想仅仅检出/克隆代码,然后运行一段时间。这可能只是我缺乏的virtualenv知识在这里....无论如何去读现在 – 2013-04-24 12:41:55

+0

看看你的例子那里。看起来它完成了我的想法 - 为自动安装在系统上的项目定义了依赖关系。它是否正确?这是我宁愿避免......我希望所有东西都可以自包含在项目文件夹中。我目前的方法是否是这样做的方式? – 2013-04-24 18:05:36

0

如果您想要密切管理每个项目的代码依赖关系,则可能需要查看virtualenv

Virtualenv将允许您保持您的依赖关系接近您的来源,但会删除容易出错的手动复制.py文件。

除此之外,有些软件包不是纯python,它们有时包含已编译的C代码 - 如果使用virtualenv,则不必担心。

+0

如果OP想要分发代码,virtualenv可以用于这个目的吗?我真的很好奇,因为那样会让我更容易。有这样的指导吗? – SethMMorton 2013-04-23 23:56:03

+0

是的....有一个阅读我的评论上面的d shawley。我可以将我的代码克隆到一个新的Python安装,并立即运行? – 2013-04-24 12:49:03