|
158 | 158 |
|
159 | 159 |
|
160 | 160 | <div class="version">
|
161 |
| - <a href='http://pytorch.org/docs/versions.html'>1.7.0a0+c438a74 ▼</a> |
| 161 | + <a href='http://pytorch.org/docs/versions.html'>1.7.0a0+e9e73ea ▼</a> |
162 | 162 | </div>
|
163 | 163 |
|
164 | 164 |
|
@@ -355,6 +355,7 @@ <h1>Source code for torch</h1><div class="highlight"><pre>
|
355 | 355 | <span class="kn">import</span> <span class="nn">os</span>
|
356 | 356 | <span class="kn">import</span> <span class="nn">sys</span>
|
357 | 357 | <span class="kn">import</span> <span class="nn">platform</span>
|
| 358 | +<span class="kn">import</span> <span class="nn">textwrap</span> |
358 | 359 | <span class="kn">import</span> <span class="nn">ctypes</span>
|
359 | 360 |
|
360 | 361 | <span class="k">if</span> <span class="n">sys</span><span class="o">.</span><span class="n">version_info</span> <span class="o"><</span> <span class="p">(</span><span class="mi">3</span><span class="p">,):</span>
|
@@ -536,6 +537,31 @@ <h1>Source code for torch</h1><div class="highlight"><pre>
|
536 | 537 | <span class="k">if</span> <span class="n">TYPE_CHECKING</span><span class="p">:</span>
|
537 | 538 | <span class="kn">import</span> <span class="nn">torch._C</span> <span class="k">as</span> <span class="nn">_C</span>
|
538 | 539 |
|
| 540 | +<span class="c1"># Check to see if we can load C extensions, and if not provide some guidance</span> |
| 541 | +<span class="c1"># on what the problem might be.</span> |
| 542 | +<span class="k">try</span><span class="p">:</span> |
| 543 | + <span class="c1"># _initExtension is chosen (arbitrarily) as a sentinel.</span> |
| 544 | + <span class="kn">from</span> <span class="nn">torch._C</span> <span class="kn">import</span> <span class="n">_initExtension</span> |
| 545 | +<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span> |
| 546 | + <span class="kn">import</span> <span class="nn">torch._C</span> <span class="k">as</span> <span class="nn">_C_for_compiled_check</span> |
| 547 | + |
| 548 | + <span class="c1"># The __file__ check only works for Python 3.7 and above.</span> |
| 549 | + <span class="k">if</span> <span class="n">sys</span><span class="o">.</span><span class="n">version_info</span> <span class="o">>=</span> <span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">7</span><span class="p">)</span> <span class="ow">and</span> <span class="n">_C_for_compiled_check</span><span class="o">.</span><span class="vm">__file__</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> |
| 550 | + <span class="k">raise</span> <span class="ne">ImportError</span><span class="p">(</span><span class="n">textwrap</span><span class="o">.</span><span class="n">dedent</span><span class="p">(</span><span class="s1">'''</span> |
| 551 | +<span class="s1"> Failed to load PyTorch C extensions:</span> |
| 552 | +<span class="s1"> It appears that PyTorch has loaded the `torch/_C` folder</span> |
| 553 | +<span class="s1"> of the PyTorch repository rather than the C extensions which</span> |
| 554 | +<span class="s1"> are expected in the `torch._C` namespace. This can occur when</span> |
| 555 | +<span class="s1"> using the `install` workflow. e.g.</span> |
| 556 | +<span class="s1"> $ python setup.py install && python -c "import torch"</span> |
| 557 | + |
| 558 | +<span class="s1"> This error can generally be solved using the `develop` workflow</span> |
| 559 | +<span class="s1"> $ python setup.py develop && python -c "import torch" # This should succeed</span> |
| 560 | +<span class="s1"> or by running Python from a different directory.</span> |
| 561 | +<span class="s1"> '''</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span> <span class="kn">from</span> <span class="bp">None</span> |
| 562 | + <span class="k">raise</span> <span class="c1"># If __file__ is not None the cause is unknown, so just re-raise.</span> |
| 563 | + |
| 564 | + |
539 | 565 | <span class="n">__all__</span> <span class="o">+=</span> <span class="p">[</span><span class="n">name</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="nb">dir</span><span class="p">(</span><span class="n">_C</span><span class="p">)</span>
|
540 | 566 | <span class="k">if</span> <span class="n">name</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="s1">'_'</span> <span class="ow">and</span>
|
541 | 567 | <span class="ow">not</span> <span class="n">name</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s1">'Base'</span><span class="p">)]</span>
|
@@ -732,8 +758,8 @@ <h1>Source code for torch</h1><div class="highlight"><pre>
|
732 | 758 | <span class="k">pass</span>
|
733 | 759 |
|
734 | 760 |
|
735 |
| -<span class="k">class</span> <span class="nc">FloatStorage</span><span class="p">(</span><span class="n">_C</span><span class="o">.</span><span class="n">FloatStorageBase</span><span class="p">,</span> <span class="n">_StorageBase</span><span class="p">):</span> |
736 |
| - <span class="k">pass</span> |
| 761 | +<div class="viewcode-block" id="FloatStorage"><a class="viewcode-back" href="../storage.html#torch.FloatStorage">[docs]</a><span class="k">class</span> <span class="nc">FloatStorage</span><span class="p">(</span><span class="n">_C</span><span class="o">.</span><span class="n">FloatStorageBase</span><span class="p">,</span> <span class="n">_StorageBase</span><span class="p">):</span> |
| 762 | + <span class="k">pass</span></div> |
737 | 763 |
|
738 | 764 |
|
739 | 765 | <span class="k">class</span> <span class="nc">HalfStorage</span><span class="p">(</span><span class="n">_C</span><span class="o">.</span><span class="n">HalfStorageBase</span><span class="p">,</span> <span class="n">_StorageBase</span><span class="p">):</span>
|
@@ -820,9 +846,9 @@ <h1>Source code for torch</h1><div class="highlight"><pre>
|
820 | 846 | <span class="c1"># is not a good way to fix this problem. Perhaps, try to redesign VariableFunctions</span>
|
821 | 847 | <span class="c1"># so that this import is good enough</span>
|
822 | 848 | <span class="k">if</span> <span class="n">TYPE_CHECKING</span><span class="p">:</span>
|
823 |
| - <span class="c1"># Some type signatures pulled in from _VariableFunctions here clash with </span> |
| 849 | + <span class="c1"># Some type signatures pulled in from _VariableFunctions here clash with</span> |
824 | 850 | <span class="c1"># signatures already imported. For now these clashes are ignored; see</span>
|
825 |
| - <span class="c1"># PR #43339 for details. </span> |
| 851 | + <span class="c1"># PR #43339 for details.</span> |
826 | 852 | <span class="kn">from</span> <span class="nn">torch._C._VariableFunctions</span> <span class="kn">import</span> <span class="o">*</span> <span class="c1"># type: ignore</span>
|
827 | 853 |
|
828 | 854 | <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="nb">dir</span><span class="p">(</span><span class="n">_C</span><span class="o">.</span><span class="n">_VariableFunctions</span><span class="p">):</span>
|
|
0 commit comments