2017-02-13 9 views
1

アドホックなローカル実行のためにひどく混じったコードがたくさんあります。私はそれをリファクタリングし始めており、これを段階的に行いたいと思います。cli pythonコードをパッケージマネージャーと互換性を持たせる

最初のステップとして、私は素敵なパッケージ構造の中に私たちのコードを配置したいと思います:$ pip install git+[my_project]期待どおりに動作となりますように、そのように

Project/ 
| 
|-- project/ 
| |-- code/ 
| | |-- __init__.py 
| | |-- horribleness_with_importables_but_also__main__.py 
| | |-- more_horribleness.py 
| |-- __init__.py 
| 
|-- setup.py 
|-- README.md 

、私はsetup.py__init__.pyに適切なことを行うことができますfrom project.more_horribleness import *は期待通りに動作します。

しかし、私は現地のすべての輸入品を相対的なものに変更し、__init__.pyに輸入品を入れました。そして、あなたはピップ物事を働かせるために何をしていますか...今、大きな問題を避けるために何らかの形で、$ python horribleness_with_importables_but_also__main__.pyを呼び出して以前と同じように動作させることができるようにしたいと考えています。私のpython if __name__ == "__main__":を私のnewfound pipパッケージ構造の中から実行するには良い方法がありますか?

答えて

1

あなたのパッケージは、純粋なPythonのであることを考えると、重要な部分は

/path/to/Project 

はどちらかPYTHONPATH環境変数またはsys.pathの操作によって、Pythonパスであるということです。しかし、これは私が推薦する解決策ではありません。あなたのパッケージがPIP-インストール可能にする世話をしてきたように私は

  1. 使用pip install --user -e .を示唆:これは~/.local/lib/pythonVERSION/site-packagesでプロジェクトをシンボリックリンクが、考慮されているプロジェクトに編集します。それはhttps://packaging.python.org/distributing/#console-scripts
をインストールするときに、あなたの実行可能ファイルが PATHにインストールされているために console_scriptsオプションを使用 python -m project またはとして、コマンドラインから実行することができるように は project/__main__.pyの主な機能を移動
  • 関連する問題