Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “错误”;找不到vcvarsall.bat“;尽管是最新的VisualStudio版本_Python_Visual Studio_Compiler Errors_Kernel_Cython - Fatal编程技术网

Python “错误”;找不到vcvarsall.bat“;尽管是最新的VisualStudio版本

Python “错误”;找不到vcvarsall.bat“;尽管是最新的VisualStudio版本,python,visual-studio,compiler-errors,kernel,cython,Python,Visual Studio,Compiler Errors,Kernel,Cython,我在Jupyter笔记本电脑公司工作。当我想在cython中编译.pyx时,它会抛出一个类似以下的错误: %run -i setup.py build_ext --inplace unable to find vcvarsall.bat setup.py文件如下所示: from distutils.core import setup from Cython.Build import cythonize setup( ext_modules=cythonize("hh_vers_ve

我在Jupyter笔记本电脑公司工作。当我想在cython中编译.pyx时,它会抛出一个类似以下的错误:

%run -i setup.py build_ext --inplace

unable to find vcvarsall.bat
setup.py文件如下所示:

from distutils.core import setup
from Cython.Build import cythonize

setup(
    ext_modules=cythonize("hh_vers_vector.pyx"),
)
然而,这只发生在我工作时的电脑上。在家里的那个,它工作得很好

正如前面所解释的,这可能是VisualStudio的一个问题。问题是,我在两台计算机上安装了完全相同版本的Visual Studio 2017社区。两台计算机上都安装了最新的Anaconda 3版本。两者都使用Python 3.6.2和IPython 6.1.0。那怎么可能呢?两者都运行在Windows10上。我还将向您展示我的.pyx文件。如果你需要更多信息,我会编辑我的帖子

from math import exp
import numpy as np
import time

def hhModel(*params, Iext, float dt, int Vref):

    ## Unwrap params argument: these variables are going to be optimized
    cdef float ENa = params[0]
    cdef float EK  = params[1]
    cdef float EL  = params[2]
    cdef float GNa = params[3]
    cdef float GK  = params[4]
    cdef float GL  = params[5]

    ## Input paramters
    # I    : a list containing external current steps, your stimulus vector [nA]
    # dt   : a crazy time parameter [ms]
    # Vref : reference potential [mV]

    def alphaM(float v, float vr):       return 0.1 * (v-vr-25) / ( 1 - exp(-(v-vr-25)/10) )
    def betaM(float v, float vr):        return 4 * exp(-(v-vr)/18)
    def alphaH(float v, float vr):       return 0.07 * exp(-(v-vr)/20)
    def betaH(float v, float vr):        return 1 / ( 1 + exp( -(v-vr-30)/10 ) )
    def alphaN(float v, float vr):       return 0.01 * (v-vr-10) / ( 1 - exp(-(v-vr-10)/10) )
    def betaN(float v, float vr):        return 0.125 * exp(-(v-vr)/80)

    ## steady-state values and time constants of m,h,n

    def m_infty(float v, float vr):      return alphaM(v,vr) / ( alphaM(v,vr) + betaM(v,vr) )
    def h_infty(float v, float vr):      return alphaH(v,vr) / ( alphaH(v,vr) + betaH(v,vr) )
    def n_infty(float v, float vr):      return alphaN(v,vr) / ( alphaN(v,vr) + betaN(v,vr) )

    ## parameters
    cdef float Cm, gK, gL, INa, IK, IL, dv_dt, dm_dt, dh_dt, dn_dt, aM, bM, aH, bH, aN, bN
    cdef float Smemb = 4000    # [um^2] surface area of the membrane
    cdef float Cmemb = 1       # [uF/cm^2] membrane capacitance density
    Cm = Cmemb * Smemb * 1e-8  # [uF] membrane capacitance

    gNa = GNa * Smemb * 1e-8   # Na conductance [mS]
    gK  = GK  * Smemb * 1e-8   # K conductance [mS]
    gL  = GL  * Smemb * 1e-8   # leak conductance [mS]

    # numSamples = int(T/dt);
    cdef int numSamples = len(Iext);
    # DEF numSamples = 200000

    # initial values
    cdef float[:] v = np.empty(numSamples, dtype=np.float)
    cdef float[:] m = np.empty(numSamples, dtype=np.float)
    cdef float[:] h = np.empty(numSamples, dtype=np.float)
    cdef float[:] n = np.empty(numSamples, dtype=np.float)
    #cdef float v[numSamples]
    #cdef float m[numSamples]
    #cdef float h[numSamples]
    #cdef float n[numSamples]

    v[0]  = Vref                    # initial membrane potential
    m[0]  = m_infty(v[0], Vref)     # initial m
    h[0]  = h_infty(v[0], Vref)     # initial h
    n[0]  = n_infty(v[0], Vref)     # initial n

    ## calculate membrane response step-by-step
    for j in range(0, numSamples-1):

        # ionic currents: g[mS] * V[mV] = I[uA]
        INa = gNa * m[j]*m[j]*m[j] * h[j] * (ENa-v[j])
        IK = gK * n[j]*n[j]*n[j]*n[j] * (EK-v[j])
        IL = gL * (EL-v[j])

        # derivatives
        # I[uA] / C[uF] * dt[ms] = dv[mV]
        dv_dt = ( INa + IK + IL + Iext[j]*1e-3) / Cm;

        aM = 0.1 * (v[j]-Vref-25) / ( 1 - exp(-(v[j]-Vref-25)/10))
        bM = 4 * exp(-(v[j]-Vref)/18)
        aH = 0.07 * exp(-(v[j]-Vref)/20)
        bH = 1 / ( 1 + exp( -(v[j]-Vref-30)/10 ) )
        aN = 0.01 * (v[j]-Vref-10) / ( 1 - exp(-(v[j]-Vref-10)/10) )
        bN = 0.125 * exp(-(v[j]-Vref)/80)

        dm_dt = (1-m[j])* aM - m[j]*bM
        dh_dt = (1-h[j])* aH - h[j]*bH
        dn_dt = (1-n[j])* aN - n[j]*bN

        # calculate next step
        v[j+1] = (v[j] + dv_dt * dt)
        m[j+1] = (m[j] + dm_dt * dt)
        h[j+1] = (h[j] + dh_dt * dt)
        n[j+1] = (n[j] + dn_dt * dt)

    return v

这有点猜测,但请尝试将
导入setuptools
添加到setup.py文件中。我相信它包含了一些帮助查找vcvarsall.bat的代码,并且在过去为我工作过。导入模块后,您不必使用该模块。谢谢,我明天会尝试使用该模块并给出反馈。您解决了这个问题吗?不,我没有。这让我抓狂,我切换到我的大学提供的Linux集群。这有点猜测,但请尝试将
import setuptools
添加到setup.py文件中。我相信它包含了一些帮助查找vcvarsall.bat的代码,并且在过去为我工作过。导入模块后,您不必使用该模块。谢谢,我明天会尝试使用该模块并给出反馈。您解决了这个问题吗?不,我没有。这让我抓狂,我转向了我大学提供的Linux集群。