【问题标题】:Creating a Python module with its dependencies self contained创建一个 Python 模块,其依赖项自包含
【发布时间】:2019-04-26 13:06:57
【问题描述】:

创建 Python 模块时,您可以使用 install_requires 列表指定模块的依赖关系。

让我们看一下这个基本示例。

setup(name='some_module',
      version='0.0.1',
      packages=find_packages(),
      install_requires=[
          'requests==2.21.0'
      ])

我打包我的模块python3 setup.py sdist 并将其上传到包存储库。

但是当我去安装pip3 install some_module==0.0.1 时,它会在我的python3 site-packages/ 中全局安装requests==2.21.0

对于我的问题,我如何获得与 npm 类似的功能,嵌套 node_modules/ 我的 Python 模块将拥有其 自己的 site-packages/ 并且它将引用其本地版本的 requests而不是覆盖我的全局版本。

谢谢!

【问题讨论】:

  • 这不是虚拟环境解决的吗?
  • @roganjosh 我认为不是因为给定包的不同版本可以位于同一嵌套级别的不同node_modules 文件夹中。据我所知,这不是 venv 的工作原理
  • @charleslandau 我会认为 npm 超出了我的舒适范围,但是一个包运行多个版本的库?这存在吗?
  • @roganjosh 不,我的意思是单独的包。如 pkg1 需要 axiosv1.0.1 而 pg2 需要 axios1.1.1
  • 我不认为 Python 的导入模型支持这种嵌套。

标签: python python-3.x python-module


【解决方案1】:

我会考虑使用PyInstaller 来完成这项任务!

直接来自 Pyinstaller 的文档:

PyInstaller 将 Python 应用程序及其所有依赖项捆绑到一个包中。 用户无需安装 Python 解释器或任何模块即可运行打包的应用程序。 PyInstaller 支持 Python 2.7 和 Python 3.4+,并正确捆绑了主要的 Python 包,如 numpy、PyQt、Django、wxPython 等。

你可以通过简单的 pip install 来安装它:

pip install PyInstaller

如需更详细的教程,请查看link

希望对您有所帮助!

【讨论】:

  • 谢谢,这是个好主意。将对其进行更多研究,从表面上看,我不确定这是否能解决我的问题,因为模块需要从普通 python 框架的上下文中导入和运行。我只浏览了文档,将报告回来。
  • 也许您可以将 Pyinstaller 创建的可执行文件添加到您的 Python 路径中。查看此链接:stackoverflow.com/questions/47350078/…,因为它有点相似。过去,我使用 Pyinstaller 为一个用 python 编写的项目创建一个可执行文件,这样我就可以创建一个 npm 包装器,这样前端开发人员就可以直接 npm 安装我的项目,而不必处理 python。祝你好运!
猜你喜欢
  • 2013-04-17
  • 2018-03-13
  • 2016-03-24
  • 1970-01-01
  • 1970-01-01
  • 2022-01-12
  • 2013-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多