Python从更高/其他文件夹导入函数
我对Python(3.3.2)是相当陌生的,我对使用Python的经验很少Python从更高/其他文件夹导入函数,python,importerror,python-import,Python,Importerror,Python Import,我对Python(3.3.2)是相当陌生的,我对使用Python的经验很少 来自。。。。导入… 除了使用时间、乌龟和数学之外。我正在处理几个项目Euler问题,这些问题需要一个函数来使用我的简单isPrime(n)函数确定一个数的素性。isPrime(n)函数是名为isPrime.py的文件中唯一的函数 对于每个问题,我都有一个单独的文件夹。我试图保持代码的简洁,但我发现直接从isPrime.py复制我的isPrime(n)函数并将其粘贴到每个问题文件夹中的每个新文件中很不方便。我有一些关于改进
来自。。。。导入…
除了使用时间、乌龟和数学之外。我正在处理几个项目Euler问题,这些问题需要一个函数来使用我的简单isPrime(n)函数确定一个数的素性。isPrime(n)函数是名为isPrime.py的文件中唯一的函数
对于每个问题,我都有一个单独的文件夹。我试图保持代码的简洁,但我发现直接从isPrime.py复制我的isPrime(n)函数并将其粘贴到每个问题文件夹中的每个新文件中很不方便。我有一些关于改进iPrime(n)功能的想法,我不想在做一些修改时打开几个问题文件夹来更改每个文件中的行
因此,我认为在每个问题文件的顶部写下以下行是可行的:
从isPrime.py导入isPrime
甚至从isPrime导入isPrime
但是,我在两方面都遇到了以下错误:
ImportError:没有名为'isPrime'的模块
以下是我的文件夹层次结构的基本描述:
ProjectEuler文件夹
- 素性函数文件夹
- isPrime.py[包含函数isPrime(n)]
- 另一个文件.py
- yetAnotherFile.py
- 问题X文件夹
- 问题x.py
- 什么,派克
- 有些事
- 问题Y文件夹
- problemY.py
- 什么东西
- 一些2.py的东西
- 问题Z文件夹
- 问题z.py
- 有些事
- 一些3.py的东西
我的问题是:
我需要在文件problemX.py
、problemY.py
和problemZ.py
的开头几行键入什么才能使用文件夹primarity Functions
中文件isPrime.py
中的函数isPrime(n)
我在stackoverflow这里进行了详细的搜索,我发现许多问题都与Python有关,并且很难导入文件/模块。然而,我不理解什么是系统路径,或者什么是相对导入,我也不知道Python文档告诉我的是什么请不要将此问题标记为许多Python/导入问题的重复。我想要的只是一个简单的1-3行代码,放在我的文件顶部,这样我就可以从其他文件夹导入我的函数,而不必每次尝试新问题时都复制和粘贴我的函数。我将非常感激最简单的回答。谢谢大家! 由于您希望将要导入的模块保存在不同的目录中,您可以通过将这些目录添加到sys.path中来告诉python在哪里可以找到它们:
from sys import path
path.append('fully specified path name of directory with module you want to import')
from mymodule import myfunction
如果isPrime.py与导入它的程序位于同一文件夹中,则不需要执行此操作,但有时这并不实际
<> p>这不是一个最佳的模块,它与它的一个函数具有相同的名称,所以我会考虑改变它。 因为要保持你在不同目录中导入的模块,你可以通过将这些目录添加到sys。路径:来告诉Python在哪里找到它们。
from sys import path
path.append('fully specified path name of directory with module you want to import')
from mymodule import myfunction
如果isPrime.py与导入它的程序位于同一文件夹中,则不需要执行此操作,但有时这并不实际
<> P>对于同一个函数的名称,它不是最优的,但是,我会考虑改变它。我也有同样的问题,即,我有一些实用的模块,可以用来解决多个项目Euler问题,每个项目Euler问题都有自己的目录。
最初,我将实用工具文件夹放入
sys.path
中,如下所示:
它感觉很脏,但它起作用了(注意:我甚至在这里使用了相对路径!)
或者,您可以在与isPrime.py
相同的目录中创建:
from distutils.core import setup
NAME = 'isPrime'
setup(name=NAME, version='0.0.1', py_modules=[NAME])
并安装您的实用程序模块:
$ python setup.py install
之后,您可以在任何脚本中使用它:
from isPrime import isPrime
如果您想使用多个实用模块;您可以将它们放入project\u euler\u utils
目录中,并将其作为Python包安装。将setup.py
沿project\u euler\u utils
目录放置:
from distutils.core import setup
NAME = 'project_euler_utils'
setup(name=NAME, version='0.0.1', packages=[NAME])
运行pip install project\u euler\u utils来安装它。之后;您可以从任何脚本/模块使用它:
from project_euler_utils.isprime import isprime
注意:我使用了小写名称作为(您需要重命名模块和其中的函数)
我试着使用我能想到的最完整的路径“C:\Users\Owner\Documents\Primality Functions Folder”
,它给了我一个语法错误:(unicode错误)“UnicodeScape”编解码器无法解码位置2-3的字节:截断的\uxxxxxxx转义。
对Windows路径使用原始字符串文字r'C:\Users\Owner…'
(注意:r'
前缀),否则反斜杠在文字字符串中是特殊的,特别是u'\U0001F385'
不是10个字符;这是一个。我遇到了与您相同的问题,即我有一些实用程序模块,可能对解决多个project euler问题有用,每个project euler问题都有自己的目录
最初,我将实用工具文件夹放入sys.path
中,如下所示:
它感觉很脏,但它起作用了(注意:我甚至在这里使用了相对路径!)
或者,您可以在与isPrime.py
相同的目录中创建:
from distutils.core import setup
NAME = 'isPrime'
setup(name=NAME, version='0.0.1', py_modules=[NAME])
并安装您的实用程序模块:
$ python setup.py install
之后,您可以在任何脚本中使用它:
from isPrime import isPrime
如果您想使用多个实用模块;您可以将它们放入project\u euler\u utils
目录中,并将其作为Python包安装。将setup.py
沿project\u euler\u utils
目录放置:
from distutils.core import setup
NAME = 'project_euler_utils'
setup(name=NAME, version='0.0.1', packages=[NAME])
运行pip install project\u euler\u utils来安装它。之后