使用PTVS、IronPython和MongoDB

2 投票
3 回答
1632 浏览
提问于 2025-04-17 20:22

我想用PTVS(Visual Studio的Python工具)开发一个应用程序,我下载了PTVS插件和IronPython for Visual Studio 2012,运行得很顺利。

我这里有个问题,

我能在PTVS和IronPython中使用MongoDB吗?

如果可以的话,我该怎么做呢?

我已经尝试通过点击Install Python Package来安装,但每次都让我先安装pip,然后安装就失败了。所以当然,命令pip install pymongo也失败了,因为pip根本没安装。

这是错误信息:

Installing 'pip' package manager.
Downloading setuptools from https://go.microsoft.com/fwlink/?LinkId=317603
Installing from setuptools-2.2
<string>:1: DeprecationWarning: object.__init__() takes no parameters for type KeyedRef
running install
Traceback (most recent call last):
  File "setup.py", line 202, in <module>
  File "C:\Program Files (x86)\IronPython 2.7\Lib\distutils\core.py", line 151, in setup
  File "C:\Program Files (x86)\IronPython 2.7\Lib\distutils\dist.py", line 952, in      run_commands
  File "C:\Program Files (x86)\IronPython 2.7\Lib\distutils\dist.py", line 971, in     run_command
  File "c:\users\dservicio1\appdata\local\temp\ptvs-zwgdmk-setuptools\setuptools-    2.2\setuptools\command\install.py", line 64, in run
AttributeError: 'module' object has no attribute '_getframe'Traceback (most recent call     last):
  File "C:\Program Files (x86)\Microsoft Visual Studio     11.0\Common7\IDE\Extensions\Microsoft\Python Tools for Visual Studio\2.0\pip_downloader.py",     line 61, in <module>
  File "C:\Program Files (x86)\IronPython 2.7\Lib\subprocess.py", line 512, in     check_call
subprocess.CalledProcessError: Command '['C:\\Program Files (x86)\\IronPython     2.7\\ipy.exe', 'setup.py', 'install']' returned non-zero exit status 1
'pip' failed to install. Exit code: 1
Installing 'pymongo'
Unhandled exception:
Traceback (most recent call last):
  File "C:\Program Files (x86)\IronPython 2.7\Lib\runpy.py", line 170, in run_module
  File "C:\Program Files (x86)\IronPython 2.7\Lib\runpy.py", line 103, in     _get_module_details
ImportError: No module named pip
'pymongo' failed to install. Exit code: 1

有什么建议吗?

谢谢!

3 个回答

2

你可能无法在IronPython中使用pymongo,但可以通过IronPython使用MongoDB的C#/.NET驱动。

关于这个驱动的信息可以在这里找到。链接中提到,你可以通过nuget安装(PM> Install-Package mongocsharpdriver),或者直接下载dll文件。

安装完成后,你可以在IronPython中像平常一样使用这些程序集:

    # Add reference to the Mongo C# driver
    import clr
    clr.AddReferenceToFileAndPath("MongoDB.Bson.dll")
    clr.AddReferenceToFileAndPath("MongoDB.Driver.dll")

然后根据MongoDB C# Driver API来使用,比如:

    # Get the MongoDB database
    from MongoDB.Driver import MongoClient
    client = MongoClient("mongodb://localhost")
    server = client.GetServer()
    database = server.GetDatabase("test")

    # Get a collection
    collection = database.GetCollection("users")

    # Add a document
    from MongoDB.Bson import BsonDocument
    user = BsonDocument({'first_name':'John', 'last_name':'Smith'})
    collection.Insert(user)

想了解更多信息,可以查看MongoDB C# Driver API

2

你可以尝试从源代码安装。下载源代码压缩包,解压后找到setup.py文件。

ipy.exe setup.py install

或者如果你想保持系统的整洁

ipy.exe setup.py install --user

你很可能会发现缺少一些依赖项,这些你需要手动解决。

看起来这个方法可能有效:http://api.mongodb.org/python/current/installation.html#installing-without-c-extensions

4

很遗憾,IronPython对pip和setuptools的支持还不太稳定。你可以尝试按照这些说明手动配置pip,这样你就可以通过PTVS安装一些包,但并不是所有的包都能和那些旧版本的setuptools兼容。

而且,很多包根本就不能在IronPython上运行。简单来说,如果一个包里面有任何本地代码(比如.pyd文件),它就无法工作,因为IronPython不支持CPython的扩展API。我猜PyMongo可能就是这样一个包。

你有没有特别的原因想用IronPython呢?要知道,PTVS完全支持普通的Python。

撰写回答