回答編集履歴

3

ダイナミックにロードした場合の問題点を追加

2019/04/02 01:50

投稿

Kenji.Noguchi
Kenji.Noguchi

スコア358

test CHANGED
@@ -64,4 +64,4 @@
64
64
 
65
65
 
66
66
 
67
- でも、名前空間の管理のためにやるのはやめたほうがいいでしょうね。プラグインとかダイナミックにソースをロードしたいとか、フレームワークを作るとか特殊な用途です。
67
+ でも、名前空間の管理のためにやるのはやめたほうがいいでしょうね。確認していませんがPyCharmなどIDEの支援をあえて放棄することになるでしょうし、静的解析をするツールも動くと思えません。プラグインとかダイナミックにソースをロードしたいとか、フレームワークを作るとか特殊な用途です。

2

Python3対応

2019/04/02 01:50

投稿

Kenji.Noguchi
Kenji.Noguchi

スコア358

test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
 
6
6
 
7
- ```Python3
7
+ ```Python2
8
8
 
9
9
  import imp
10
10
 
@@ -36,4 +36,32 @@
36
36
 
37
37
 
38
38
 
39
+ Deprecation Warningが出るとのことですので、importlibを使った場合
40
+
41
+
42
+
43
+ ```Python3
44
+
45
+ from importlib.machinery import SourceFileLoader
46
+
47
+
48
+
49
+
50
+
51
+ SourceFileLoader('hogepackage', 'foo.py').load_module()
52
+
53
+ SourceFileLoader('hogepackage', 'bar.py').load_module()
54
+
55
+
56
+
57
+ from hogepackage import Foo, Bar
58
+
59
+ print(type(Foo()))
60
+
61
+ print(type(Bar()))
62
+
63
+ ```
64
+
65
+
66
+
39
67
  でも、名前空間の管理のためにやるのはやめたほうがいいでしょうね。プラグインとかダイナミックにソースをロードしたいとか、フレームワークを作るとか特殊な用途です。

1

コメント追加

2019/04/02 01:43

投稿

Kenji.Noguchi
Kenji.Noguchi

スコア358

test CHANGED
@@ -33,3 +33,7 @@
33
33
  <class 'hogepackage.Foo'>
34
34
 
35
35
  ```
36
+
37
+
38
+
39
+ でも、名前空間の管理のためにやるのはやめたほうがいいでしょうね。プラグインとかダイナミックにソースをロードしたいとか、フレームワークを作るとか特殊な用途です。