我一直这样:
DeprecationWarning: integer argument expected, got float
Run Code Online (Sandbox Code Playgroud)
如何让这条消息消失?有没有办法避免Python中的警告?
我有一个名为foobar的文件(没有.py扩展名).在同一目录中,我有另一个试图导入它的python文件:
import foobar
Run Code Online (Sandbox Code Playgroud)
但这只有在我将文件重命名为foobar.py时才有效.是否可以导入没有.py扩展名的python模块?
更新:该文件没有扩展名,因为我也将它用作独立脚本,我不想输入.py扩展名来运行它.
Update2:我将选择下面提到的符号链接解决方案.
如何.py
在Python 3.3+中导入任意python源文件(其文件名可以包含任何字符,并不总是以其结尾)?
我使用imp.load_module
如下:
>>> import imp
>>> path = '/tmp/a-b.txt'
>>> with open(path, 'U') as f:
... mod = imp.load_module('a_b', f, path, ('.py', 'U', imp.PY_SOURCE))
...
>>> mod
<module 'a_b' from '/tmp/a-b.txt'>
Run Code Online (Sandbox Code Playgroud)
它仍然适用于Python 3.3,但根据imp.load_module
文档,它已被弃用:
从版本3.3开始不推荐使用:不需要使用加载器来加载模块,并且不推荐使用find_module().
和imp
模块文档建议使用importlib
:
注意新程序应使用importlib而不是此模块.
在不使用已弃用的imp.load_module
函数的情况下,在Python 3.3+中加载任意python源文件的正确方法是什么?