2012-05-10 11 views
0

私はPythonモジュール(https://github.com/Yannbane/Tick.py)とPythonプログラム(https://github.com/Yannbane/Flatland.py)を作った。プログラムはモジュールをインポートし、モジュールがなければ動作できません。私はプログラムを実行する前に、これらのファイルを両方ダウンロードすることを意図していましたが、私はこれについて少し心配しています。プログラムでGitで他の人とスクリプトを共有するときにサードパーティのPythonのインポートを処理するには?

は、私はこれらの行を追加しました:

sys.path.append("/home/bane/Tick.py") 
import tick 

"/home/bane/Tick.py"が含まれる必要があるモジュールの私の地元のレポへのパスですが、これは明らかに他の人に異なるものになります!この状況をどうすれば解決できますか?

+0

両方のファイルがあなたによって書き込まれた場合、サードパーティのインポートはどのようにして行われますか? – geoffspear

+0

それは彼らにとって第三者ですね。 – corazza

答えて

2

Python Package Indexにモジュールを送信して、人々が簡単にインストールできるようにして(pip tick)、Pythonパスに追加しなくてもインポートできます。

それ以外の場合は、単にモジュールをダウンロードしてプログラムのサブディレクトリに配置するように教えてください。あなたが実際にそれほど多くの努力をしていると感じたら、モジュールのコピーをプログラムのリポジトリに置くことができます(もちろん、両方のバージョンを最新の状態に保つことを意味します。私はシンボリックリンクを使うことが可能かもしれないと思います)。

レポ名が少し誤解を招く場合があります。大文字小文字の区別が重要な場合が多いため、モジュールとPythonの命名規則に一致するようにrepo tick.pyを呼び出すとよいでしょう。

3

@Lattywareによって提案されたものは実行可能なオプションです。しかし、メインプログラム(DjangoとPyDevなど)に依存するコア依存関係を持つことは珍しくありません。特にメインコードが特定のバージョンのライブラリに対して調整されている場合、これはうまく動作します。

Latitudewareがコードのメンテナンスに関して言及している問題を避けるために、git submodulesを調べると、この種のレイアウトが可能になり、コードのバージョン管理が維持されます。

ディレクトリの構造から、両方のファイルが同じディレクトリに存在するようです。これは、同じpackageの2つのモジュールであるかもしれないよりも明らかかもしれません。その場合、あなたは単にディレクトリに__init__.pyと呼ばれる空のファイルを追加する必要があり、その後、あなたのインポートがで仕事ができる:

import bane.tick 

または

from bane import tick 

ああ、はい...あなたが低く使用する必要がありますモジュール名の大文字小文字の区別があります( PEP8を詳しく調べる価値があります:)

HTH!

+0

+1、いくつかの素晴らしい提案。 –