擅长:python、mysql、java
<p>为了避免“隐藏的配置”(即不在源代码管理/机器特定的内容中)和保持像您描述的那样的笔记本/代码分离,我做了如下操作:</p>
<pre><code>code/
mymodule.py
mypackage/
__init__.py
notebooks/
mynb.ipynb
mynb2.ipynb
paths.py <--- below
</code></pre>
<p>在<code>paths.py</code>中:</p>
<pre><code>import sys
import pathlib
sys.path.insert(0, str(pathlib.Path(__file__).parents[1] / 'code'))
# sys.path[0] = str(pathlib.Path(__file__).parents[1] / 'code')
</code></pre>
<p>那么在<code>mynb*.ipynb</code>我可以很高兴地做:</p>
<pre class="lang-python prettyprint-override"><code>import paths
import mymodule, mypackage
</code></pre>
<p>等等</p>
<p>后一种形式有效地替换了从空字符串(当前目录)到“code”目录的导入路径,这可能更干净一些。这使得导入对使用诸如<code>os.chdir()</code>之类的内容不敏感。</p>