13

私はこのようなディレクトリ構造を持っています...

dir/
  build.py
dir2
  dir3/
  packages.py

ここでbuild.py必要なのは、パッケージではないpackages.pyことに注意してください。dir2

packages.pyでは、ロードするための最良の方法は何ですかbuild.py(ディレクトリ構造は変更できません)

編集

解決策はsys.path.append良いようですが、packages.pyファイルをめったに使用する必要sys.pathがなく、めったに使用されないが先頭にあるディレクトリを保持する必要があることが1つあります。

編集Ⅱ

imp解決が一番だと思います。

import imp    
packages = imp.load_source('packages', '/path/to/packages.py')

編集Ⅲ

Python 3.x の場合

imp.load_sourceおよびその他の機能は非推奨になっていることに注意してください。したがって、imp.load_moduletoday を使用する必要があります。

fp, pathname, description = imp.find_module('packages', '/path/to/packages.py')
try:
    mod = imp.load_module('packages', fp, pathname, description)
finally:
    # since we may exit via an exception, close fp explicitly
    if fp:
        fp.close()
4

2 に答える 2

10

あなたがすることができます:

sys.path.append('./dir2/dir3')
import packages

またはさらに良い:

sys.path.append(os.path.join(os.path.dirname(__file__), 'dir2/dir3'))
import packages

または (ここから取得: How to import a module given the full path? )

import imp    
packages = imp.load_source('packages', '/path/to/packages.py')
于 2012-05-10T12:12:06.557 に答える