回答編集履歴
3
ダイナミックにロードした場合の問題点を追加
answer
CHANGED
@@ -31,4 +31,4 @@
|
|
31
31
|
print(type(Bar()))
|
32
32
|
```
|
33
33
|
|
34
|
-
でも、名前空間の管理のためにやるのはやめたほうがいいでしょうね。プラグインとかダイナミックにソースをロードしたいとか、フレームワークを作るとか特殊な用途です。
|
34
|
+
でも、名前空間の管理のためにやるのはやめたほうがいいでしょうね。確認していませんがPyCharmなどIDEの支援をあえて放棄することになるでしょうし、静的解析をするツールも動くと思えません。プラグインとかダイナミックにソースをロードしたいとか、フレームワークを作るとか特殊な用途です。
|
2
Python3対応
answer
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
こんなやり方でいかがでしょうか。
|
2
2
|
|
3
3
|
|
4
|
-
```
|
4
|
+
```Python2
|
5
5
|
import imp
|
6
6
|
|
7
7
|
imp.load_source('hogepackage', 'foo.py')
|
@@ -17,4 +17,18 @@
|
|
17
17
|
<class 'hogepackage.Foo'>
|
18
18
|
```
|
19
19
|
|
20
|
+
Deprecation Warningが出るとのことですので、importlibを使った場合
|
21
|
+
|
22
|
+
```Python3
|
23
|
+
from importlib.machinery import SourceFileLoader
|
24
|
+
|
25
|
+
|
26
|
+
SourceFileLoader('hogepackage', 'foo.py').load_module()
|
27
|
+
SourceFileLoader('hogepackage', 'bar.py').load_module()
|
28
|
+
|
29
|
+
from hogepackage import Foo, Bar
|
30
|
+
print(type(Foo()))
|
31
|
+
print(type(Bar()))
|
32
|
+
```
|
33
|
+
|
20
34
|
でも、名前空間の管理のためにやるのはやめたほうがいいでしょうね。プラグインとかダイナミックにソースをロードしたいとか、フレームワークを作るとか特殊な用途です。
|
1
コメント追加
answer
CHANGED
@@ -15,4 +15,6 @@
|
|
15
15
|
|
16
16
|
```
|
17
17
|
<class 'hogepackage.Foo'>
|
18
|
-
```
|
18
|
+
```
|
19
|
+
|
20
|
+
でも、名前空間の管理のためにやるのはやめたほうがいいでしょうね。プラグインとかダイナミックにソースをロードしたいとか、フレームワークを作るとか特殊な用途です。
|