【问题标题】:referencing and importing third party python libraries引用和导入第三方 python 库
【发布时间】:2013-04-23 22:10:29
【问题描述】:

我是 python 的新手,来自 C# 背景。在 C# l 中,第三方库通常存储在项目文件夹中。

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

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

我担心这样做可能会忽略一些事情,因为我环顾四周,并没有真正看到 Python 社区中的其他人这样做。

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

请随时告诉我您看到的任何缺点,无论多么简单。

谢谢!

【问题讨论】:

  • 应该没问题...如果您正在分发它,请注意丢失 dll。更好的系统是将它们留在原处并使用 pyinstaller 或类似的东西来打包您的项目以进行分发,这通常会捆绑在依赖项中

标签: c# python


【解决方案1】:

我支持将virtualenvpip 用于开发目的。这将为您提供您习惯的沙箱。至于分发,请使用 setup.py 并重用 requirements.txt 文件,该文件将与 pip install -r 一起使用以安装依赖项以生成 @987654328 的 install_requires 参数@。我一直想建立一个示例来稍微展示一下这一点 - 查看https://github.com/dave-shawley/setup-example 以获得一个带有一些描述的好示例。我计划在时间允许的情况下添加更多内容。

【讨论】:

  • 感谢您的回复。我承认我还没有完全调查 virtualenv。但是,例如我想将我的代码签出到以前没有它的计算机上......使用虚拟环境并不意味着我仍然必须在我的系统上安装第三方库(即使它是由 virtualenv 自动完成的)?理想情况下,我只想签出/克隆代码,然后直接跑掉。这可能只是我在这里缺乏virtualenv知识......无论如何现在都要阅读它
  • 看看你的例子。似乎它符合我的想法 - 定义了系统上自动安装的项目的依赖项。这个对吗?这是我希望避免的……我希望所有内容都包含在项目文件夹中。我目前的方法是这样做的吗?
【解决方案2】:

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

Virtualenv 将允许您将依赖项保持在靠近源的位置,但会消除容易出错的手动复制 .py 文件。

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

【讨论】:

  • 如果 OP 想要分发代码,是否可以将 virtualenv 用于此目的?我真的很好奇,因为这也会让我的喜欢更容易。有这样做的指南吗?
  • 是的....请阅读我对上面 d shawley 的评论。我可以将我的代码克隆到一个新的 python 安装并立即运行吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多