简体   繁体   English

软件包setup.py和Flask目录结构

[英]Package setup.py and Flask directory structure

Update : added setup.py content. 更新 :添加了setup.py内容。

I have the following directory structure: 我有以下目录结构:

setup.py
packagename/
    __init__.py
    useless_file.py

In __init__.py , I have the following: __init__.py ,我有以下内容:

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy

db = SQLAlchemy()

CONFIG_FILENAME = "packagename.settings"


def create_app():
    app = Flask(__name__)
    app.config.from_object(CONFIG_FILENAME)

    db.init_app(app)

    app.register_blueprint(sms_testing)

    return app

I followed Flask's recommended package structure . 我遵循了Flask 推荐的软件包结构

Here is setup.py : 这是setup.py

import os
from setuptools import setup

requires = (
        "flask",
        "flask-sqlalchemy",
        "requests>=0.13.6",
        "python-dateutil>=1.5",
        "twilio",
        "selenium",
        )

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

setup(
    name = "Package Name",
    version = "0.0.1",
    author = "Charles-Axel Dein",
    author_email = "ca@d3in.org",
    description = ("useless"),
    license = "BSD",
    keywords = "example documentation tutorial",
    url = "http://packages.python.org/an_example_pypi_project",
    packages=['package_name',],
    # namespace_packages = ['package_name'],
    install_requires=requires,
    long_description=read('README.md'),
    classifiers=[
        "Development Status :: 3 - Alpha",
        "Topic :: Utilities",
        "License :: OSI Approved :: BSD License",
    ],
)

When I do python setup.py develop , I get: 当我执行python setup.py develop ,我得到:

Traceback (most recent call last):
  File "setup.py", line 2, in <module>
    from setuptools import setup
  File "/.virtualenvs/api/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/__init__.py", line 2, in <module>
    # The Python Imaging Library.
  File "/.virtualenvs/api/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/extension.py", line 2, in <module>
  File "/.virtualenvs/api/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/dist.py", line 6, in <module>
  File "/.virtualenvs/api/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/sdist.py", line 5, in <module>
  File "/.virtualenvs/api/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/pkg_resources.py", line 2623, in <module>
    if not len(req.specs):
  File "/.virtualenvs/api/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/pkg_resources.py", line 679, in subscribe
    `requirements` must be a string or a (possibly-nested) sequence
  File "/.virtualenvs/api/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/pkg_resources.py", line 2623, in <lambda>
    if not len(req.specs):
  File "/.virtualenvs/api/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/pkg_resources.py", line 2172, in activate
    return pv
  File "/.virtualenvs/api/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/pkg_resources.py", line 1790, in declare_namespace
    module.__path__ = []; _set_parent_ns(packageName)
  File "/.virtualenvs/api/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/pkg_resources.py", line 1761, in _handle_ns

  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pkgutil.py", line 238, in load_module
    mod = imp.load_module(fullname, self.file, self.filename, self.etc)
  File "/package_name/__init__.py", line 2, in <module>
    import flask
  File "/.virtualenvs/api/lib/python2.7/site-packages/flask/exthook.py", line 86, in load_module
    raise ImportError('No module named %s' % fullname)
ImportError: No module named flask

(I redacted the folder) (我编辑了文件夹)

I guess it's logical, since setuptools is trying to import my package, which imports packagename/__init__.py , where there is this import flask before it got the chance to install it. 我猜想这是合乎逻辑的,因为setuptools试图导入我的软件包,该软件包会导入packagename/__init__.py ,在这里有这个import flask ,才有机会安装它。

The thing is, I need this import flask in __init__.py to create the db. 关键是,我需要在__init__.py中使用此import flask来创建数据库。

What would you recommend? 你会推荐什么?

Thanks! 谢谢!

Chx CHX

I personally don't like python setup.py develop , have you tried this? 我个人不喜欢python setup.py develop ,您尝试过吗?

% pip install -e .

Where the current directory is the directory with your setup.py in it. 当前目录是其中包含setup.py的目录。 It's similar to develop but will install all required packages. develop类似,但将安装所有必需的软件包。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM