0
私はpythonパッケージマネージャを作成していますが、現在のディレクトリのプログラム/パッケージに基づいて__all__
というオブジェクトを生成するようにしていますが、非パッケージ。私は、次のディレクトリ構造があった場合 すなわち、:現在のディレクトリのすべてのファイルとディレクトリを取得するpython
project
|------__init__.py
|------prog1.py
|------package
|------__init__.py
|------prog2.py
|------resources
|------ping.png
を私は__all__
変数は、以下のようにしたい:
__all__ = ['prog1', 'package']
私はいろいろなことを試してみましたが、すべて正直に、私は見当がつかない私がやっていること。
これは私が最後にしようとしたものです:
import os
from os import path
def config_all(directory):
__all__ = []
directory = path.abspath(directory)
for root, dirs, files in os.walk(directory, topdown=False):
for d in dirs:
os.chdir("/czar/".join(path.abspath(d).rsplit("/", 1)))
v = list(os.walk('.'))[0][2]
if "__init__.py" in v:
__all__.append(d)
for i in v:
while i in __all__:
__all__.remove(i)
os.chdir('..')
for f in files:
__all__.append(path.join(root, f).rsplit("/", 1)[1].rsplit(".", 1)[0])
return __all__
__all__ = config_all('czar/')
print(__all__)
何をお見せください。試したことがあります。 –
@BryanOakley私はそれが私がそれを望んでいたようにほとんどうまくいかなかったので私がまだ試したことを示していないし、私はこのポストの応答を接線にしたくありませんでした。 – mcchucklezz
しないでください: '__all__'動的にしないでください。単純に*明示的に*モジュールからエクスポートする関数と変数を指定します。 – Evert