使用以下目录结构
.
├── setup.py
└── yourpackage
├── __init__.py
├── some_module.py
├── other_module.py
└── sub_package
├── __init__.py
└── more_modules.py
是否可以这样做:
>> import yourpackage as yp
>> yp.some_module.bar()
>> yp.sub_package.more_modules.foo()
some_module
的内容为
def bar(): print('bar')
more_modules
的内容为
def foo(): print('foo')
我似乎无法让这个工作
编辑:我在第一种情况下会得到的错误是
Traceback (most recent call last):
File "<string>", line 1, in <module>
AttributeError: module 'yourpackage' has no attribute 'some_module'
在第二种情况下,这是一个类似的错误,但more_modules
答案 0 :(得分:1)
如果您想使用内部模块而不明确导入它们,则必须在DATA work.dm_chg_bal;
SET tmp_bal_chg;
FORMAT dt2 date9.;
acct_id2 = LAG1(acct_id);
app_suf2 = LAG1(app_suf);
dt2 = LAG1(start_dt);
RUN;
文件中导入它们:
__init__.py
和import some_module
import other_module
import sub_package
:
sub_package/__init__.py
请注意,这可能会使模块的第一次导入变慢。
其他选项是在您的代码中明确导入它们:
import more_modules
答案 1 :(得分:0)
实际上进口非常棘手......
你可以这样做:
import yourpackage as yp
from yourpackage import some_module #yp does not work
在ipython中调用:
In [8]: yp.some_module.bar()
bar
然后
import yourpackage.sub_package
from yourpackage.sub_package import more_modules
在ipython中调用:
In [20]: yp.sub_package.more_modules.foo()
foo
你必须导入顶级包然后子包......
这是一个有趣的链接:https://www.codementor.io/sheena/python-path-virtualenv-import-for-beginners-du107r3o1
答案 2 :(得分:0)
总结@ A.Joly和@slallum的答案:实际上,我发现他们的方法组合实际上有效。我创造了这些:
DECLARE
variable_name VARCHAR2(200);
BEGIN
SELECT col_name
INTO variable_name
FROM your_tab
WHERE specific_column = value;
-- rest
EXCEPTION
WHEN NO_DATA_FOUND THEN ...
WHEN TOO_MANY_ROWS THEN ...
END;
pycharmprojects
|_networkxy
|_ main_run.py ---- misleading name, it's just an ordinary file
|_ more_module.py
|_ __init__.py
的内容:
__init__.py
from . import main_run
from . import more_module
的内容:
main_run.py
def some_module():
print('some module')
的内容:
more_module.py
现在,在目录def more_module():
print('more module')
,在命令行中:
pycharmprojects
注意:由于某些原因,我无法在(C:\Users\Name\.conda\envs\my_root) C:\Users\Name\PycharmProjects>python
Python 3.6.0 |Anaconda custom (64-bit)| (default, Dec 23 2016, 11:57:41) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import networkxy
>>> networkxy.main_run.some_module()
some module
>>> networkxy.more_module.more_module()
more module
中import main_run
,但__init__.py
似乎有用。