【发布时间】:2019-12-22 11:32:21
【问题描述】:
上下文
我正在创建我的第一个包,名为 countries_utils,可在 https://pypi.org/project/countries-utils 上使用。
我已阅读以下教程:
- 打包 Python 项目 https://packaging.python.org/tutorials/packaging-projects/
- 管理应用程序依赖关系https://packaging.python.org/tutorials/managing-dependencies/#managing-dependencies
- 打包分发项目https://packaging.python.org/guides/distributing-packages-using-setuptools/#distributing-packages
库代码countries_utils
该库的源代码可在 bitbucket 上获得:
问题
- 我运行命令
pip install countries-utils - 我下载了最新版本的库
- 我运行
python命令 - 我使用
import countries_utils导入库 - 我收到错误:
ModuleNotFoundError: No module named 'countries_utils'
问题:我错过了什么?
pip list 命令的结果
pip list
Package Version
--------------------------------------------- -----------
...
contextlib2 0.5.5
countries-utils 1.0.13
country-list 0.1.4
cryptography 2.7
...
错误
这是在 python 控制台中执行import countries_utils 的结果:
> python
Python 3.7.4 (default, Aug 9 2019, 18:34:13) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import countries_utils
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'countries_utils'
setup.py 文件(工作版本)
# -*- coding: utf-8 -*-
# Copyright (c) ALT-F1 SPRL, Abdelkrim Boujraf. All rights reserved.
# Licensed under the EUPL License, Version 1.2.
# See LICENSE in the project root for license information.
from os import path
import json
import setuptools
with open('README.md', 'r') as fh:
long_description = fh.read()
here = path.abspath(path.dirname(__file__))
root = path.dirname(here)
package_json = path.join(here, 'package.json')
# a workaround when installing locally from git repository with pip install -e .
if not path.isfile(package_json):
package_json = path.join(root, 'package.json')
# version number and all other params from package.json
with open(package_json, encoding='utf-8') as f:
package = json.load(f)
setuptools.setup(
name=package['name'],
version=package['version'],
author=package['author']['name'],
author_email=package['author']['email'],
description=package['description'],
license=package['license'],
long_description=long_description,
long_description_content_type='text/markdown',
url=package['repository']['url'],
install_requires=[
'pycountry',
'pandas',
'country-list'
],
packages=[package['name']],
keywords=package['keywords'],
# Find the list of classifiers : https://pypi.org/classifiers/
classifiers=[
'Development Status :: 5 - Production/Stable',
'Intended Audience :: Developers',
'License :: OSI Approved :: European Union Public Licence 1.2 (EUPL 1.2)',
'Operating System :: OS Independent',
'Programming Language :: Python :: 3.7',
'Topic :: Software Development :: Libraries :: Python Modules',
],
python_requires='>=3.5',
project_urls={ # Optional
'Bug Reports': 'https://bitbucket.org/altf1be/countries-utils/issues?status=new&status=open',
'Company behind the library': 'http://www.alt-f1.be',
'Source': 'https://bitbucket.org/altf1be/countries-utils',
},
)
【问题讨论】:
-
您需要在此处发布您的
setup.py,而不是指向外部存储库的链接,以便查看此问题的人会看到相同的代码集来重现问题。 Bitbucket 中的代码(尤其是 master 分支的链接)会随着时间的推移而改变或消失。 -
从 PyPi (
pip install countries_utils) 安装软件包后的快速检查显示,没有countries_utils文件夹被添加到site-packages目录中,所以.. 错误是意料之中的。 -
亲爱的@gino-mempin 创建文件夹站点包缺少什么?
标签: python-3.x setup.py pypi