【问题标题】:Working with PTVS, IronPython and MongoDB使用 PTVS、IronPython 和 MongoDB
【发布时间】:2014-02-28 15:23:48
【问题描述】:

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

我的问题是,

我可以将 MongoDB 与 PTVS 和 ItonPython 一起使用吗?

如果可以,我该怎么做?

我已经尝试通过单击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

有什么建议吗?

谢谢!

【问题讨论】:

    标签: python mongodb visual-studio-2012 ironpython ptvs


    【解决方案1】:

    不幸的是,IronPython 对 pip 和 setuptools 的支持仍然很不稳定。您可以尝试按照 these instructions 手动配置 pip,然后您应该能够从 PTVS 安装软件包,但并非所有软件包都可以与旧版本的 setuptools 一起使用。

    此外,许多软件包不能与 IronPython 一起使用。基本上,如果包中有任何本机代码(.pyd 文件),它将无法工作,因为 IronPython 没有实现 CPython 可扩展性 API。我怀疑 PyMongo 会是其中之一。

    您尝试为此使用 IronPython 有什么特别的原因吗?请注意,PTVS 完全支持常规 Python。

    【讨论】:

    • 感谢答案。我想使用 IronPython 的主要原因是因为我想用 WPF 开发一个 GUI 应用程序,如果我使用常规 Python,我认为它不支持 WPF。
    【解决方案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

    【讨论】:

    • 谢谢,我马上试试!
    【解决方案3】:

    您可能无法将 pymongo 与 IronPython 一起使用,但您可以使用 IronPython 中用于 MongoDB 的 C#/.NET 驱动程序。

    驱动程序的信息是here。如此链接中所述,您可以使用 nuget (PM&gt; 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 了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-14
      • 2014-12-30
      • 2010-09-05
      • 2015-03-04
      相关资源
      最近更新 更多