使用自定义Python包

时间:2018-04-25 09:53:23

标签: python pip package

我是Python的新手,我不知道如何使用自定义包或其开发生命周期。

我一直在开发一个Python库,旨在从位于生产环境中指定文件夹的许多脚本中使用。

目前,图书馆和使用它的脚本从开发生命周期的角度来看是非常重要的,因为它的开发仍处于早期阶段。

问题是,如何在从脚本中使用时测试库工作正常?

到目前为止,为了能够从脚本导入自定义库,我考虑了3种不同的选择:

  1. 作为已安装的pip包

  2. 以某种方式将软件包下载到目录并更改pythonpath

  3. 作为脚本文件夹

  4. 中的目录

    根据我使用其他语言的经验,选项1将是最好的,因为它可能更容易处理软件包版本,一切都将采用“标准”方式,但在我的情况下可能有点困难,因为包源托管在与生产环境隔离的私有Gitlab服务器中。

    选项2和3在我看来像是变通办法,而不像使用自定义库的“好方法”。

    Python中是否有其他替代方法可以有效地使用包?

2 个答案:

答案 0 :(得分:2)

到目前为止,分发软件包的最佳方式是pip。该功能易于使用,并且在分发时最终用户没有编译器问题。如果你的软件包包含C扩展,pip特别有用,因为在操作系统上编译(特别是Windows)可能是一场噩梦。

另一种方式(类似于2)是从源安装,即setup.py文件,而不是添加python路径,只需像pip那样安装它:

您需要一个setuptools设置脚本。一旦准备好构建运行:

python setup.py build

OR     python ./setup.py build

如果你在PowerShell中运行。

这将产生一个包含源的压缩文件(在扩展的情况下编译),你可以分发它。

最终用户只需运行:

python setup.py install 

在PowerShell上使用python ./setup.py install来安装软件包。

答案 1 :(得分:1)

从如何使用自定义包

开始

你必须定义该包的目的是什么。我的意思是,这对每个人或仅对你有用。如果是第一种情况,那么最好的方法是在PyPI上发布它(在这种情况下遵循所有步骤)。如果是第二个目的,则省略步骤5.

然后,无论您的目的是什么,第一步都是:

  1. 开发包(尝试记录并测试它)。 PyCharm它是一个很好的IDE,可以帮助创建单元测试。我建议您查看以下链接:Creating-and-running-Python_Test

    A Project Test folder structure that I have been working on

  2. 第二步是创建一个setup.py文件。 setup.py文件可以包含很多字段。这里有一个例子:

      from setuptools import setup
    
    
      setup(
      name='mdutils',
      version=1.0,
      license='BSD',
      author='Didac Coll',
      author_email='didaccoll_93@hotmail.com',
      maintainer='Dídac Coll',
      maintainer_email='didaccoll_93@hotmail.com',
      description='A package, useful to create Markdown files while executing python code.',
      long_description=open('README.md').read(),
      platforms=['Python 3.6'],
      packages=['mdutils', 'mdutils.tools', 'mdutils.fileutils'],
      include_package_data=True,
      zip_safe=False,
      classifiers=['Development Status :: 4 - Beta',
                   'Operating System :: OS Independent',
                   'Programming Language :: Python',
                   'Programming Language :: Python :: 3.6',
               'Topic :: Utilities',
               'License :: OSI Approved :: BSD License'])
    
  3. 创建软件包后,必须使用以下命令python setup.py develop

  4. 测试分发
  5. 如果一切正常,现在您可以使用以下命令python setup.py sdist创建分发。这将生成一个名为dist的新文件夹,您将在其中找到tar.gz文件。如果您有兴趣为Windows创建分发版,我建议您使用下一个命令python setup.py sdist --format=zip。通过这种方式,您将创建一个zip文件到dist文件夹。

    现在,您在压缩文件中拥有自己的软件包分发版。所以,如果你想 要将它安装到项目中,只需要使用pip:pip install mdutils- 1.0.zip。您也可以使用以下python命令升级它:python install --upgrade mdutils-2.0.zip

    执行上述命令会将您的软件包安装到您的site-package文件夹中。

    在这里,您将找到有关包装和分发的大量信息:https://packaging.python.org/tutorials/distributing-packages/

  6. 在这里,还有一个很好的教程:https://python-packaging.readthedocs.io/en/latest/

    1. 最后,如果您的项目正常运行,您可以在PyPi上发布它。您必须创建一个帐户。有了它,请使用以下命令注册您的包:python setup.py register。我强烈建议您在尝试在PyPI上发布之前在TestPyPI上进行测试。在此处创建另一个帐户:https://test.pypi.org/并在PyCharm终端上输入以下命令:twine upload --repository-url https://test.pypi.org/legacy/ dist/*(有关TestPyPI here的更多信息)。