gpt4 book ai didi

python setup.py install 去掉 __init__.py

转载 作者:太空宇宙 更新时间:2023-11-04 09:05:53 24 4
gpt4 key购买 nike

也许我正在做一些愚蠢的事情,或者我需要在 setup.py 中做一些事情,或者这可能是一个错误。

python 2.6 Django 1.6

这是一个可重用的 django 应用程序,具有多个子应用程序。使它与 django 相关的是错误。当我尝试启用子应用程序时,django 找不到它们。它找不到它们的原因是因为 setup.py 在安装过程中删除了 __init__.py。当我手动将它添加回安装位置时就可以了。

app文件夹及相关文件排列如下。

someapp
django
apps
subapp1
subapp2
subapp3
__init__.py
setup.py

python setup.py install 之后,安装位置缺少上面显示的 __init__.py,如果缺少该文件,django 找不到 subapp1、subapp2、subapp3我尝试将它们添加到 INSTALLED_APPS

当我尝试添加 someapp.django.apps.subapp1 django 说

No module named apps.subapp1

当我在安装位置的 apps` 文件夹中添加 __init__.py 时,错误消失了。



所有其他文件夹在运行 setup.py 后都有 __init__.py,除了 apps



我尝试更改 apps 目录名称,认为这可能是一个保留字,但它并没有改变任何东西。我还尝试向 __init__.py 文件添加一些内容,认为它可能不能为空但没有帮助。还尝试添加一个空的 models.py 文件,认为那里需要更多但仍然没有骰子。



我的 setup.py 文件只是标准样板文件。也许我需要补充一些东西。我尝试使用 distutils 而不是 setuptools,但这并没有什么不同。



#setup.py

import os
from setuptools import setup

def read(fname):
return open(os.path.join(os.path.dirname(__file__), fname)).read()


setup(
name = "appname",
version = "0.0.1",
author = "blah inc",
author_email = "blah@blah.com",
description = ("some description"),
license = "MPL",
keywords = "some keywords",
url = "http://someurl.org",
packages=[
'someapp',
'someapp.api',
'someapp.django',
'someapp.django.apps.subapp1',
'someapp.django.apps.subapp2',
'someapp.django.apps.subapp3',
'someapp.eventsocket',
'someapp.interface',
],
etc.
etc.
.
.
)

最佳答案

你错过了 someapp.django.apps 包;您必须在该列表中列出所有 包。

您可以使用 setuptools.find_packages() 简化任务:

setup(
# ...
packages=find_packages(),

# ...
)

关于python setup.py install 去掉 __init__.py,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20870673/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com