我应该如何将其设置为工作包



我刚开始学习python,正试图弄清楚如何打包一些用于分发的工具,但很难理解文档。

在阅读了这些文档之后,我有了一个看起来像这样的包结构:

/UTM (git repo)
/utmizer
/raster
raster.py
__init__.py
convert.py
LICENSE
README.md
setup.py
utmize.py

__init__.py看起来像这样,因为我不确定自己在做什么:

import utmizer.utmize as utmize
from utmizer.raster import raster
from .convert import Converter

我的导入声明全文如下:

convert.py

import fiona
import geopandas as gpd
import json
import os
import re
from raster import raster

utmize.py

from utmizer.convert import Converter
import getopt
import os
from pathlib import Path
import sys

最后,setup.py看起来是这样的:

from pathlib import Path
import setuptools
from setuptools import find_packages

VERSION = '0.0.1'
HERE = Path(__file__).parent.resolve()

long_description = (HERE / 'README.md').read_text(encoding='utf-8')

setuptools.setup(
name='utmizer',
version=VERSION,
author='username',
author_email='my@email.com',
description='Automatic projection of data to appropriate UTM zone',
long_description=long_description,
long_description_content_type='text/markdown',
url='https://github.com/username/UTM',
install_requires=find_packages(),
classifiers=[
"Programming Language :: Python :: 3"
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
python_requires='>=3.8, <4',
)

当我运行python setup.py bdist_wheel时,它完成了;但当我将它安装在一个新的conda实例中并尝试CCD_ 6时,它会抛出一个CCD_。

第一件事:

  • setup.pyLICENSEREADME.md移动到项目的根目录(git存储库(中,不在实际的顶级可导入包中
  • utmizer/raster中添加包初始值设定项__init__.py,以及任何其他可导入的包和子包

所以你应该得到这样的目录树:

/UTM (git repo)
setup.py
LICENSE
README.md
/utmizer
/raster
__init__.py
raster.py
__init__.py
convert.py
utmize.py

似乎您在setup.py中混淆了packagesinstall_requires。不确定你在install_requires中到底需要什么,但我想至少需要geopandasfiona

也不需要限制为Python<4,因为没有人知道它是否真的不兼容。通常,你应该只为你在写作时确定不兼容的东西添加限制(没有人能猜到未来(。

from pathlib import Path
import setuptools
VERSION = '0.0.1'
HERE = Path(__file__).parent.resolve()
long_description = (HERE / 'README.md').read_text(encoding='utf-8')
setuptools.setup(
name='utmizer',
version=VERSION,
author='username',
author_email='my@email.com',
description='Automatic projection of data to appropriate UTM zone',
long_description=long_description,
long_description_content_type='text/markdown',
url='https://github.com/username/UTM',
packages=setuptools.find_packages(),
install_requires=[
'fiona',
'geopandas',
],
classifiers=[
"Programming Language :: Python :: 3"
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
python_requires='>=3.8',
)

您可能可以将__init__.py文件留空。

通常,您应该始终使用从顶级可导入包(或模块(开始的绝对导入。在您的情况下,只有一个顶级可导入包utmizer(而没有顶级可导入模块(。

所以在utmizer/convert.py:中

import fiona
import geopandas as gpd
import json
import os
import re
from utmizer.raster import raster

utmizer/utmize.py似乎已经正确了。

相关内容

  • 没有找到相关文章

最新更新